diff --git a/.env b/.env
index a749dc4..a3b03a9 100644
--- a/.env
+++ b/.env
@@ -20,6 +20,7 @@ APP_DEFAULT_MAIL=kevin.adametz@me.com
APP_CHECKOUT_TEST_MAIL=kevin.adametz@me.com
APP_INFO_TEST_MAIL=kevin.adametz@me.com
+APP_MAIN_TAX = 1.19
LOG_CHANNEL=stack
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 23b4d94..9e60f8b 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,60 +5,45 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
@@ -298,7 +283,7 @@
-
+
@@ -307,11 +292,11 @@
+
+
-
-
@@ -600,7 +585,8 @@
-
+
+
diff --git a/app/Http/Controllers/SalesController.php b/app/Http/Controllers/SalesController.php
index f8c774a..5c35aae 100755
--- a/app/Http/Controllers/SalesController.php
+++ b/app/Http/Controllers/SalesController.php
@@ -79,6 +79,9 @@ class SalesController extends Controller
if($ShoppingOrder->shopping_user->is_for === 'ot'){
return 'Kundenbestellung ';
}
+ if($ShoppingOrder->shopping_user->is_for === 'hp'){
+ return 'Homepartybestellung ';
+ }
return '-';
})
->addColumn('reference', function (ShoppingOrder $ShoppingOrder) {
@@ -221,6 +224,9 @@ class SalesController extends Controller
if($ShoppingOrder->shopping_user->is_for === 'ot'){
return 'Kundenbestellung ';
}
+ if($ShoppingOrder->shopping_user->is_for === 'hp'){
+ return 'Homepartybestellung ';
+ }
return '-';
})
->addColumn('reference', function (ShoppingOrder $ShoppingOrder) {
diff --git a/app/Http/Controllers/User/HomepartyController.php b/app/Http/Controllers/User/HomepartyController.php
index 45ba3e9..f21c44b 100755
--- a/app/Http/Controllers/User/HomepartyController.php
+++ b/app/Http/Controllers/User/HomepartyController.php
@@ -54,6 +54,11 @@ class HomepartyController extends Controller
$homeparty_user = new HomepartyUser();
$homeparty_user->is_host = true;
}
+
+ if($homeparty->completed){
+ abort(404);
+ }
+
$data = [
'homeparty' => $homeparty,
'homeparty_user' => $homeparty_user,
@@ -155,6 +160,9 @@ class HomepartyController extends Controller
abort(404);
}
}
+ if($homeparty->completed){
+ abort(404);
+ }
$data = [
'homeparty' => $homeparty,
'homeparty_user' => $homeparty_user,
@@ -213,18 +221,25 @@ class HomepartyController extends Controller
public function order($id = null)
{
+ $user = User::find(Auth::user()->id);
+
$homeparty = $this->getHomparty($id);
HomepartyCart::calculateHomeparty($homeparty);
+ $userHistoryPaymentOrder = UserHistory::whereUserId($user->id)->whereAction('payment_homeparty')->where('referenz', $homeparty->id)->get()->last();
$data = [
'homeparty' => $homeparty,
+ 'userHistoryPaymentOrder' => $userHistoryPaymentOrder,
];
return view('user.homeparty.order', $data);
}
//perform Request
public function orderStore($id = null)
{
+
$homeparty = $this->getHomparty($id);
+
+
if(Request::ajax()) {
$data = Request::all();
@@ -265,7 +280,7 @@ class HomepartyController extends Controller
}
$homeparty_user = HomepartyUser::findOrFail($data['homeparty_user_id']);
HomepartyCart::calculateHomeparty($homeparty);
- $html_user_cart = view("user.homeparty.show_products_order", ['homeparty_guest' => $homeparty_user])->render();
+ $html_user_cart = view("user.homeparty.show_products_order", ['homeparty' => $homeparty, 'homeparty_guest' => $homeparty_user])->render();
$html_bonus = view("user.homeparty.show_bonus", ['homeparty' => $homeparty])->render();
$html_host_bonus = view("user.homeparty.show_calc_bonus_host")->render();
$html_total = view("user.homeparty.show_total_order", ['homeparty' => $homeparty])->render();
@@ -292,7 +307,7 @@ class HomepartyController extends Controller
}
$homeparty_user = HomepartyUser::findOrFail($data['homeparty_user_id']);
HomepartyCart::calculateHomeparty($homeparty);
- $html_user_cart = view("user.homeparty.show_products_order", ['homeparty_guest' => $homeparty_user])->render();
+ $html_user_cart = view("user.homeparty.show_products_order", ['homeparty' => $homeparty, 'homeparty_guest' => $homeparty_user])->render();
$html_bonus = view("user.homeparty.show_bonus", ['homeparty' => $homeparty])->render();
$html_host_bonus = view("user.homeparty.show_calc_bonus_host")->render();
$html_total = view("user.homeparty.show_total_order", ['homeparty' => $homeparty])->render();
@@ -313,20 +328,81 @@ class HomepartyController extends Controller
}
$homeparty_user = HomepartyUser::findOrFail($data['homeparty_user_id']);
HomepartyCart::calculateHomeparty($homeparty);
- $html_user_cart = view("user.homeparty.show_products_order", ['homeparty_guest' => $homeparty_user])->render();
+ $html_user_cart = view("user.homeparty.show_products_order", ['homeparty' => $homeparty, 'homeparty_guest' => $homeparty_user])->render();
$html_bonus = view("user.homeparty.show_bonus", ['homeparty' => $homeparty])->render();
$html_host_bonus = view("user.homeparty.show_calc_bonus_host")->render();
$html_total = view("user.homeparty.show_total_order", ['homeparty' => $homeparty])->render();
return response()->json(['response' => true, 'data'=>$data, 'html_user_cart'=>$html_user_cart, 'html_bonus'=>$html_bonus, 'html_host_bonus'=>$html_host_bonus, 'html_total'=>$html_total]);
}
+ if($data['action'] === 'updateDeliveryOption') {
+ if($data['homeparty_id'] == $homeparty->id){
+ $homeparty_user = HomepartyUser::findOrFail($data['homeparty_user_id']);
+ if($homeparty_user->homeparty_id !== $homeparty->id){
+ abort(404);
+ }
+ if(isset($data['delivery'])){
+ $homeparty_user->delivery = $data['delivery'];
+ $homeparty_user->save();
+ }
+ }
+ $homeparty_user = HomepartyUser::findOrFail($data['homeparty_user_id']);
+ HomepartyCart::calculateHomeparty($homeparty);
+ $html_user_cart = view("user.homeparty.show_products_order", ['homeparty' => $homeparty, 'homeparty_guest' => $homeparty_user])->render();
+ $html_bonus = view("user.homeparty.show_bonus", ['homeparty' => $homeparty])->render();
+ $html_host_bonus = view("user.homeparty.show_calc_bonus_host")->render();
+ $html_total = view("user.homeparty.show_total_order", ['homeparty' => $homeparty])->render();
+ return response()->json(['response' => true, 'data'=>$data, 'html_user_cart'=>$html_user_cart, 'html_bonus'=>$html_bonus, 'html_host_bonus'=>$html_host_bonus, 'html_total'=>$html_total]);
+ }
+
+
return response()->json(['response' => false, 'data'=>$data]);
}
- /* $data = [
- 'homeparty' => $homeparty,
- ];
- return view('user.homeparty.order', $data);*/
+ HomepartyCart::calculateHomeparty($homeparty);
+ if(\App\Services\HomepartyCart::$price === 0){
+ \Session()->flash('alert-error', 'Dein Warenkorb ist leer, bitte füge erst Produkte hinzu.');
+ return redirect(route('user_homeparty_order', [$homeparty->id]));
+ }
+
+ //save the calucalte card!
+ $time = time();
+ $date = date('d.m.Y H:i:s', $time);
+ $user = User::find(Auth::user()->id);
+ Yard::instance('shopping')->destroy();
+ Yard::instance('shopping')->add($homeparty->id, 'Bestellung Homeparty '.$date, 1, \App\Services\HomepartyCart::$price, ['image' => "", 'slug' => $time, 'weight' => 0]);
+ do {
+ $identifier = Util::getToken();
+ } while( ShoppingInstance::where('identifier', $identifier)->count() );
+
+ HomepartyCart::store($identifier, $date);
+
+ $data = [];
+ $data['is_from'] = 'homeparty';
+ $data['shop_price_net'] = HomepartyCart::getFormattedPriceNet();
+ $data['shop_price_tax'] = HomepartyCart::getFormattedPriceTax();
+ $data['homeparty_id'] = $homeparty->id;
+ $data['is_for'] = 'hp';
+
+ ShoppingInstance::create([
+ 'identifier' => $identifier,
+ 'user_shop_id' => 1, //is first faker shop for nuy intern
+ 'auth_user_id' => Auth::user()->id,
+ 'payment' => 5, //Berater Membership
+ 'subdomain' => url('/'),
+ 'country_id' => Yard::instance('shopping')->getShippingCountryId(),
+ 'shopping_data' => $data,
+ 'back' => url()->previous(),
+
+ ]);
+
+ HomepartyCart::store($identifier, $date);
+ Yard::instance('shopping')->store($identifier);
+
+ $path = route('checkout.checkout_card', ['identifier'=>$identifier]);
+ UserHistory::create(['user_id' => $user->id, 'action'=>'payment_homeparty', 'status'=>1, 'referenz'=>$homeparty->id, 'identifier'=>$identifier]);
+ //$path = str_replace('http', 'https', $path);
+ return redirect()->secure($path);
}
diff --git a/app/Http/Controllers/User/OrderController.php b/app/Http/Controllers/User/OrderController.php
index c97b4d1..40f1621 100755
--- a/app/Http/Controllers/User/OrderController.php
+++ b/app/Http/Controllers/User/OrderController.php
@@ -84,6 +84,9 @@ class OrderController extends Controller
if($ShoppingOrder->shopping_user->is_for === 'ot'){
return 'Kundenbestellung ';
}
+ if($ShoppingOrder->shopping_user->is_for === 'hp'){
+ return 'Homepartybestellung ';
+ }
return '-';
})
->addColumn('reference', function (ShoppingOrder $ShoppingOrder) {
diff --git a/app/Http/Controllers/Web/CheckoutController.php b/app/Http/Controllers/Web/CheckoutController.php
index 1b18a57..f5e2ddb 100755
--- a/app/Http/Controllers/Web/CheckoutController.php
+++ b/app/Http/Controllers/Web/CheckoutController.php
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Pay\PayoneController;
+use App\Models\Homeparty;
use App\Models\PaymentMethod;
use App\Models\PaymentTransaction;
use App\Models\ShippingCountry;
@@ -48,6 +49,7 @@ class CheckoutController extends Controller
$is_from = isset($shopping_data['is_from']) ? $shopping_data['is_from'] : 'shopping';
$is_for = isset($shopping_data['is_for']) ? $shopping_data['is_for'] : false;
+ $homeparty_id = isset($shopping_data['homeparty_id']) ? $shopping_data['homeparty_id'] : null;
$shopping_user = null;
@@ -76,6 +78,7 @@ class CheckoutController extends Controller
$shopping_user = new ShoppingUser();
$shopping_user->is_for = $is_for;
$shopping_user->is_from = $is_from;
+ $shopping_user->homeparty_id = $homeparty_id;
$shopping_user->mode = 'prev';
}
}else{
@@ -117,6 +120,7 @@ class CheckoutController extends Controller
$data = [
'is_from' => $is_from,
'is_for' => $is_for,
+ 'shopping_data' => $shopping_data,
'user_shop' => Util::getUserShop(),
'shopping_user' => $shopping_user,
'shopping_mode' => Util::getUserShoppingMode(),
@@ -151,6 +155,8 @@ class CheckoutController extends Controller
$shopping_user->accepted_data_checkbox = 1;
$shopping_user->is_for = $is_for;
$shopping_user->is_from = $is_from;
+ $shopping_user->homeparty_id = isset($data['homeparty_id']) ? $data['homeparty_id'] : null;
+
//Lieferadresse
if($is_from === 'user_order'){
if(isset($data['shopping_user_id']) && $data['is_for'] === 'ot'){
@@ -456,30 +462,50 @@ class CheckoutController extends Controller
$user_shop = Util::getUserShop();
- $data = [
- 'shopping_user_id' => $shopping_user->id,
- 'auth_user_id' => $shopping_user->auth_user_id,
- 'country_id' => Yard::instance('shopping')->getShippingCountryId(),
- 'user_shop_id' => $user_shop->id,
- 'payment_for' => Util::getUserPaymentFor(),
+ if($shopping_user->is_from === 'homeparty'){
+ //get data
+ $homeparty = Homeparty::find($shopping_user->homeparty_id);
+ //set Data!
+ $data = [
+ 'shopping_user_id' => $shopping_user->id,
+ 'auth_user_id' => $shopping_user->auth_user_id,
+ 'country_id' => Yard::instance('shopping')->getShippingCountryId(),
+ 'user_shop_id' => $user_shop->id,
+ 'payment_for' => Util::getUserPaymentFor(),
+ 'homeparty_id' => $shopping_user->homeparty_id,
+ 'total' => Yard::instance('shopping')->total(2, '.', ''),
+ 'subtotal' => $homeparty->order['price_net'],
+ 'shipping' => $homeparty->order['shipping_price'],
+ 'shipping_net' => $homeparty->order['shipping_price_net'],
+ 'subtotal_ws' => 0,
+ 'tax' => 0,
+ 'total_shipping' => Yard::instance('shopping')->totalWithShipping(2, '.', ''),
+ 'points' => $homeparty->order['points'],
+ 'weight' => 0,
+ 'txaction' => 'prev',
+ 'mode' => Util::getUserShoppingMode(),
+ ];
+ }else{
+ $data = [
+ 'shopping_user_id' => $shopping_user->id,
+ 'auth_user_id' => $shopping_user->auth_user_id,
+ 'country_id' => Yard::instance('shopping')->getShippingCountryId(),
+ 'user_shop_id' => $user_shop->id,
+ 'payment_for' => Util::getUserPaymentFor(),
+ 'total' => Yard::instance('shopping')->total(2, '.', ''),
+ 'subtotal' => Yard::instance('shopping')->subtotal(2, '.', ''),
+ 'shipping' => Yard::instance('shopping')->shipping(2, '.', ','),
+ 'shipping_net' => Yard::instance('shopping')->shippingNet(2, '.', ''),
+ 'subtotal_ws' => Yard::instance('shopping')->subtotalWithShipping(2, '.', ''),
+ 'tax' => Yard::instance('shopping')->taxWithShipping(2, '.', ''),
+ 'total_shipping' => Yard::instance('shopping')->totalWithShipping(2, '.', ''),
+ 'points' => Yard::instance('shopping')->points(),
+ 'weight' => Yard::instance('shopping')->weight(),
+ 'txaction' => 'prev',
+ 'mode' => Util::getUserShoppingMode(),
+ ];
+ }
-
- 'total' => Yard::instance('shopping')->total(2, '.', ''),
- 'subtotal' => Yard::instance('shopping')->subtotal(2, '.', ''),
-
- 'shipping' => Yard::instance('shopping')->shipping(2, '.', ','),
- 'shipping_net' => Yard::instance('shopping')->shippingNet(2, '.', ''),
- 'subtotal_ws' => Yard::instance('shopping')->subtotalWithShipping(2, '.', ''),
-
- 'tax' => Yard::instance('shopping')->taxWithShipping(2, '.', ''),
- 'total_shipping' => Yard::instance('shopping')->totalWithShipping(2, '.', ''),
-
- 'points' => Yard::instance('shopping')->points(),
-
- 'weight' => Yard::instance('shopping')->weight(),
- 'txaction' => 'prev',
- 'mode' => Util::getUserShoppingMode(),
- ];
$shopping_order= false;
if($this->getPayments('shopping_order_id')){
$shopping_order = ShoppingOrder::find($this->getPayments('shopping_order_id'));
@@ -493,13 +519,11 @@ class CheckoutController extends Controller
}
$this->putPayments('shopping_order_id', $shopping_order->id);
-
- $items = Yard::instance('shopping')->getContentByOrder();
-
- $shopping_order->shopping_order_items()->each(function($model) use ($items, $shopping_order) {
- foreach ($items as $item) {
+ $items = Yard::instance('shopping')->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) {
- $model->fill([
+ $data = [
'shopping_order_id' => $shopping_order->id,
'row_id' => $item->rowId,
'product_id' => $item->id,
@@ -509,27 +533,43 @@ class CheckoutController extends Controller
'price_net' => Yard::instance('shopping')->rowPriceNet($item, 3, '.', ''),
'tax_rate' => $item->taxRate,
'slug' => $item->options->slug,
- ])->save();
+ ];
+ if($shopping_user->is_from === 'homeparty'){
+ $data['homeparty_id'] = (int) $shopping_user->homeparty_id;
+ $data['product_id'] = null;
+ }
+ $model->fill($data)->save();
return false;
}
}
return $model->delete();
});
+
foreach ($items as $item) {
- if (!ShoppingOrderItem::where('shopping_order_id', $shopping_order->id)->where('row_id', $item->rowId)->count())
- ShoppingOrderItem::create([
+ if (!ShoppingOrderItem::where('shopping_order_id', $shopping_order->id)->where('row_id', $item->rowId)->count()){
+ $data = [
'shopping_order_id' => $shopping_order->id,
'row_id' => $item->rowId,
- 'product_id' => $item->id,
+ 'product_id' => 70,
'comp' => $item->options->comp,
'qty' => $item->qty,
'price' => $item->price,
'price_net' => Yard::instance('shopping')->rowPriceNet($item, 3, '.', ''),
'tax_rate' => $item->taxRate,
'slug' => $item->options->slug
- ]);
- };
+ ];
+
+ if($shopping_user->is_from === 'homeparty'){
+ $data['homeparty_id'] = (int) $shopping_user->homeparty_id;
+ $data['product_id'] = null;
+ }
+
+ $shopping_order_item = ShoppingOrderItem::create($data);
+ }
+ }
+
+
return $shopping_order;
}
diff --git a/app/Models/Homeparty.php b/app/Models/Homeparty.php
index c534b87..c6d2df7 100644
--- a/app/Models/Homeparty.php
+++ b/app/Models/Homeparty.php
@@ -69,7 +69,9 @@ class Homeparty extends Model
'order_to' => 'bool',
'active' => 'bool',
'default' => 'bool',
- 'token_active' => 'bool'
+ 'token_active' => 'bool',
+ 'settings' => 'array',
+ 'order' => 'array'
];
protected $dates = [
@@ -94,6 +96,8 @@ class Homeparty extends Model
'default',
'token',
'token_active',
+ 'settings',
+ 'order'
];
public function auth_user()
diff --git a/app/Models/HomepartyUser.php b/app/Models/HomepartyUser.php
index 31fe57c..07a0814 100644
--- a/app/Models/HomepartyUser.php
+++ b/app/Models/HomepartyUser.php
@@ -123,7 +123,9 @@ class HomepartyUser extends Model
'shipping_country_id' => 'int',
'has_buyed' => 'bool',
'subscribed' => 'bool',
- ];
+ 'settings' => 'array',
+
+ ];
protected $dates = [
'user_deleted_at'
@@ -161,7 +163,9 @@ class HomepartyUser extends Model
'subscribed',
'notice',
'mode',
- 'user_deleted_at'
+ 'settings',
+ 'delivery',
+ 'user_deleted_at'
];
public function homeparty()
@@ -190,9 +194,27 @@ class HomepartyUser extends Model
}
public function isAddress(){
- if($this->billing_firstname !== null){
+ if($this->billing_firstname !== null && $this->billing_country_id !== null){
return true;
}
return false;
}
+
+ public function getDelivery(){
+ return $this->delivery === 'direct' ? 'direct' : 'host';
+ }
+
+
+ public function getShipping(){
+ if($this->same_as_billing){
+ $country_id = $this->billing_country_id != null ? $this->billing_country_id : 1;
+ }else{
+ $country_id = $this->shipping_country_id != null ? $this->shipping_country_id : 1;
+ }
+ $shippingCountry = ShippingCountry::whereCountryId($country_id)->first();
+ if(!$shippingCountry){
+ return null;
+ }
+ return $shippingCountry->shipping;
+ }
}
diff --git a/app/Models/Product.php b/app/Models/Product.php
index 71a167a..035b1c0 100644
--- a/app/Models/Product.php
+++ b/app/Models/Product.php
@@ -174,6 +174,8 @@ class Product extends Model
'show_order' => 'Wird immer als Option angezeigt',
'upgrade' => 'Produktupgrade zur Produkt ID',
'upgrade_member' => 'Beraterupgrade zur Karriere ID',
+ 'proportional_voucher' => 'Anteiliger Gutschein Berater',
+
];
public $unitTypes = [
@@ -192,6 +194,7 @@ class Product extends Model
4 => 'Nur Mitgliedschaft Berater',
5 => 'Onboarding Berater',
6 => 'Onboarding Berater + Berater Shop',
+ 7 => 'zur internen Berechnung',
];
diff --git a/app/Models/ShoppingInstance.php b/app/Models/ShoppingInstance.php
index 225d727..be16859 100644
--- a/app/Models/ShoppingInstance.php
+++ b/app/Models/ShoppingInstance.php
@@ -43,6 +43,7 @@ class ShoppingInstance extends Model
2 => 'Berater Shop',
3 => 'Berater Membership',
4 => 'Berater Wizard',
+ 5 => 'Berater Homeparty',
];
protected $table = 'shopping_instances';
diff --git a/app/Models/ShoppingOrder.php b/app/Models/ShoppingOrder.php
index 57431b8..8513290 100644
--- a/app/Models/ShoppingOrder.php
+++ b/app/Models/ShoppingOrder.php
@@ -92,6 +92,7 @@ class ShoppingOrder extends Model
'shopping_user_id',
'auth_user_id',
'member_id',
+ 'homeparty_id',
'country_id',
'user_shop_id',
'total',
@@ -143,6 +144,11 @@ class ShoppingOrder extends Model
return $this->belongsTo('App\Models\ShippingCountry','country_id');
}
+ public function homeparty()
+ {
+ return $this->belongsTo('App\Models\Homeparty','homeparty_id');
+ }
+
public function user_shop()
{
return $this->belongsTo('App\Models\UserShop','user_shop_id');
diff --git a/app/Models/ShoppingOrderItem.php b/app/Models/ShoppingOrderItem.php
index 0f6372e..370e3fd 100644
--- a/app/Models/ShoppingOrderItem.php
+++ b/app/Models/ShoppingOrderItem.php
@@ -57,6 +57,7 @@ class ShoppingOrderItem extends Model
'shopping_order_id',
'row_id',
'product_id',
+ 'homeparty_id',
'comp',
'qty',
'price',
@@ -76,6 +77,11 @@ class ShoppingOrderItem extends Model
return $this->belongsTo('App\Models\Product','product_id');
}
+ public function homeparty()
+ {
+ return $this->belongsTo('App\Models\Homeparty','homeparty_id');
+ }
+
public function getFormattedPrice()
{
return formatNumber($this->attributes['price']);
diff --git a/app/Models/ShoppingUser.php b/app/Models/ShoppingUser.php
index da6b78f..ad6269b 100644
--- a/app/Models/ShoppingUser.php
+++ b/app/Models/ShoppingUser.php
@@ -160,6 +160,7 @@ class ShoppingUser extends Model
'is_for',
'is_from',
'shopping_user_id',
+ 'homeparty_id',
'wp_order_number',
'wp_order_date',
];
diff --git a/app/Models/UserHistory.php b/app/Models/UserHistory.php
index 6019ae8..4e671f9 100644
--- a/app/Models/UserHistory.php
+++ b/app/Models/UserHistory.php
@@ -79,11 +79,11 @@ class UserHistory extends Model
2 => 'warning',
3 => 'danger',
4 => 'warning',
- 5 => 'success',
+ 5 => 'warning',
6 => 'danger',
7 => 'warning',
8 => 'success',
- 9 => 'success',
+ 9 => 'secondary',
10 => 'success',
21 => 'danger',
22 => 'danger',
diff --git a/app/Services/HomepartyCart.php b/app/Services/HomepartyCart.php
index 5a20e09..1adb5c7 100644
--- a/app/Services/HomepartyCart.php
+++ b/app/Services/HomepartyCart.php
@@ -5,6 +5,8 @@ namespace App\Services;
use App\Models\Homeparty;
+use App\Models\Product;
+use App\Models\ShippingCountry;
class HomepartyCart
{
@@ -26,6 +28,9 @@ class HomepartyCart
public static $ek_price = 0;
public static $income_price = 0;
+ private static $shipping_total = 0;
+ private static $shipping_net_total = 0;
+
private static $homeparty;
private static $userCarts = [];
@@ -34,10 +39,14 @@ class HomepartyCart
public static $is_bonus = false;
public static $is_bonus_coupon = false;
+
private static $bonus_coupon = 0;
private static $bonus_value = 30;
- private static $bonus_price = 0;
+ private static $voucher_price = 0;
+ public static $voucher_name = "";
+
+
private static $bonus_diff = 0;
private static $bonus_points_diff = 0;
private static $bonus_coupon_fault = 0;
@@ -51,7 +60,6 @@ class HomepartyCart
500 => 35,
600 => 40,
700 => 50,
-
];
public static function calculateHomeparty(Homeparty $homeparty){
@@ -62,7 +70,9 @@ class HomepartyCart
}
self::$userCarts[$homeparty_user->id] = new HomepartyUserCart($homeparty_user);
self::addCart(self::$userCarts[$homeparty_user->id]);
+
}
+ self::caluclateShipping();
self::caluclateBonus();
self::calculateBonusHost();
}
@@ -80,15 +90,16 @@ class HomepartyCart
}
- public static function caluclateBonus(){
+ private static function caluclateBonus(){
if(self::$price >= 200){
self::$is_bonus = true;
+ $proportional_voucher = Product::whereIdentifier('proportional_voucher')->first();
+ self::$voucher_price = $proportional_voucher->price;
+ self::$voucher_name = $proportional_voucher->getLang('name');
- //TODO get from PRODUCT
- self::$bonus_price = 11.90;
- self::$price += self::$bonus_price;
- self::$price_net += 10;
+ self::$price += self::$voucher_price;
+ self::$price_net += $proportional_voucher->getPriceWith(true, false);
$bonus_tmp = self::$price - self::$bonus_value;
@@ -118,7 +129,7 @@ class HomepartyCart
}
- public static function calculateBonusHost(){
+ private static function calculateBonusHost(){
if(self::$is_bonus){
$bonus_total = self::$bonus_value + self::$bonus_coupon;
$user_cart = self::getUserCart(self::$user_host_id);
@@ -133,11 +144,140 @@ class HomepartyCart
$bonus_percent = (100/$user_cart->price*$bonus_total);
self::$bonus_points_diff = round($user_cart->points/100*$bonus_percent);
$user_cart->points -= self::$bonus_points_diff;
- $user_cart->price -= $bonus_total;
+
+ $user_cart->price -= $bonus_total;
+ $user_cart->price_net -= ($bonus_total / config('app.main_tax'));
+ self::$price -= $bonus_total;
+ self::$price_net -= ($bonus_total / config('app.main_tax'));
+
+
}
}
+ private static function caluclateShipping(){
+
+ //weight to the orders
+ //first host
+ $host_user_cart = self::getUserCart(self::$user_host_id);
+ $host_user_cart->shipping_weight = $host_user_cart->weight;
+
+ foreach (self::$homeparty->homeparty_users as $homeparty_user){
+ if(!$homeparty_user->is_host){
+ $user_cart = self::$userCarts[$homeparty_user->id];
+ if($homeparty_user->getDelivery() === 'direct'){
+ $user_cart->shipping_weight += $user_cart->weight;
+ }else{
+ $host_user_cart->shipping_weight += $user_cart->weight;
+ }
+ }
+ }
+
+ self::calculateShippingPrice();
+
+ }
+
+ private static function calculateShippingPrice(){
+
+ foreach (self::$homeparty->homeparty_users as $homeparty_user) {
+ $shipping = $homeparty_user->getShipping();
+ $user_cart = self::$userCarts[$homeparty_user->id];
+ if(!$shipping){
+ return;
+ }
+ if($user_cart->shipping_weight === 0){
+ $shipping_price = $shipping->shipping_prices->first();
+ $shipping_price->price = 0;
+ $shipping_price->shipping_price_net = 0;
+ }else{
+ //sec by weight
+ $shipping_price = self::shippingPriceByWeight($shipping->shipping_prices, $user_cart->shipping_weight);
+
+ //default
+ if(!$shipping_price){
+ $shipping_price = $shipping->shipping_prices->first();
+ }
+ }
+
+ if($shipping_price){
+ $price = $shipping_price->price;
+ $user_cart->shipping_price = $price;
+ $user_cart->shipping_tax_rate = $shipping_price->tax_rate;
+ $user_cart->shipping_price_net = round($price / ((100+$shipping_price->tax_rate) / 100), 2);
+ $user_cart->shipping_tax = round($price / (100+$shipping_price->tax_rate) * 100, 2);
+ }
+
+ //on the end, add prices for porto
+ $user_cart->price += $user_cart->shipping_price;
+ $user_cart->price_net += $user_cart->shipping_price_net;
+ self::$price += $user_cart->shipping_price;
+ self::$price_net += $user_cart->shipping_price_net;
+
+ self::$shipping_total += $user_cart->shipping_price;
+ self::$shipping_net_total += $user_cart->shipping_price_net;
+
+ }
+ }
+
+ private static function shippingPriceByWeight($prices, $weight){
+ foreach ($prices as $price){
+ if($price->weight_from > 0 && $price->weight_to > 0){
+ if($weight >= $price->weight_from && $weight <= $price->weight_to){
+ return $price;
+ }
+ }
+ }
+ return false;
+ }
+
+
+ public static function store($identifier, $date){
+
+ $data = [
+ 'date' => $date,
+ 'identifier' => $identifier,
+ 'points' => self::$points,
+ 'price' => round(self::$price, 2),
+ 'price_net' => round(self::$price_net, 2),
+ 'ek_price' => round(self::$ek_price, 2),
+ 'income_price' => round(self::$income_price, 2),
+ 'user_host_id' => self::$user_host_id,
+ 'is_bonus' => self::$is_bonus,
+ 'is_bonus_coupon' => self::$is_bonus_coupon,
+ 'bonus_value' => self::$bonus_value,
+ 'bonus_coupon' => self::$bonus_coupon,
+ 'bonus_total' => self::$bonus_value + self::$bonus_coupon,
+ 'shipping_price' => self::$shipping_total,
+ 'shipping_price_net' => self::$shipping_net_total,
+ 'bonus_points_diff' => self::$bonus_points_diff,
+ 'voucher_price' => self::$voucher_price,
+ 'voucher_name' => self::$voucher_name,
+ ];
+ $user_data = [];
+ foreach (self::$homeparty->homeparty_users as $homeparty_user){
+
+ $user_cart = self::$userCarts[$homeparty_user->id];
+ $user_data[$homeparty_user->id] = [
+ 'is_host' => $homeparty_user->is_host,
+ 'points' => $user_cart->points,
+ 'price' => round($user_cart->price, 2),
+ 'price_net' => round($user_cart->price_net, 2),
+ 'ek_price' => round($user_cart->ek_price, 2),
+ 'income_price' => round($user_cart->income_price, 2),
+ 'weight' => $user_cart->weight,
+ 'shipping_weight' => $user_cart->shipping_weight,
+ 'shipping_price' => round($user_cart->shipping_price, 2),
+ 'shipping_tax_rate' => round($user_cart->shipping_tax_rate, 2),
+ 'shipping_price_net' => round($user_cart->shipping_price_net, 2),
+ 'shipping_tax' => $user_cart->shipping_tax,
+ ];
+ }
+ $data['user_carts'] = $user_data;
+ self::$homeparty->order = $data;
+ self::$homeparty->save();
+
+ }
+
public static function getUserCartHost(){
return self::getUserCart(self::$user_host_id);
}
@@ -172,7 +312,7 @@ class HomepartyCart
}
public static function getFormattedBonusPrice()
{
- return formatNumber(self::$bonus_price);
+ return formatNumber(self::$voucher_price);
}
public static function getFormattedBonusStart(){
return formatNumber(self::$bonus_start);
@@ -211,330 +351,7 @@ class HomepartyCart
return formatNumber( self::$bonus_points_diff, 0 );
}
- /* public static function getTaxRate()
- {
- return config('cart.tax');
- }
-
- public function putYardExtra($key, $value){
- $content = $this->getYContent();
- $content->put($key, $value);
- $this->ysession->put($this->yinstance, $content);
- }
-
- public function getYardExtra($key){
- $content = $this->getYContent();
- if ($content->has($key)){
- return $content->get($key);
- }
- return false;
- }
-
- public function getShippingCountryName(){
-
- $shippingCountry = ShippingCountry::find($this->shipping_country_id);
- if($shippingCountry && $shippingCountry->country){
- return $shippingCountry->country->getLocated();
- }
- return "";
- }
- public function getShippingCountryCountryId()
- {
- $shippingCountry = ShippingCountry::find($this->shipping_country_id);
- if($shippingCountry && $shippingCountry->country){
- return $shippingCountry->country->id;
- }
- return 1; //default DE
- }
-
- public function getShippingCountryId()
- {
- return $this->shipping_country_id;
- }
-
-
- public function getYContent()
- {
- if (is_null($this->ysession->get($this->yinstance))) {
- return new Collection([]);
- }
- return $this->ysession->get($this->yinstance);
- }
-
-
- public function reCalculateShippingPrice(){
- $this->calculateShippingPrice();
- }
-
- public function setShippingCountryWithPrice($shipping_country_id, $shipping_is_for = 'ot')
- {
- $this->shipping_country_id = $shipping_country_id;
- $this->putYardExtra('shipping_country_id', $shipping_country_id);
-
- $this->shipping_is_for = $shipping_is_for;
- $this->putYardExtra('shipping_is_for', $shipping_is_for);
-
- $this->calculateShippingPrice();
-
- }
-
- private function calculateShippingPrice(){
-
- $shippingCountry = ShippingCountry::find($this->shipping_country_id);
- if(!$shippingCountry){
- return;
- }
- $shipping = $shippingCountry->shipping;
-
- if($this->weight() == 0){
- $shipping_price = $shipping->shipping_prices->first();
- $shipping_price->price = 0;
- $shipping_price->price_comp = 0;
- }else{
- //first by price
- $shipping_price = $this->shippingPriceByTotal($shipping->shipping_prices, $this->total(2, '.', ''));
- //sec by weight
- if(!$shipping_price){
- $shipping_price = $this->shippingPriceByWeight($shipping->shipping_prices, $this->weight());
- }
- //default
- if(!$shipping_price){
- $shipping_price = $shipping->shipping_prices->first();
- }
- }
- if($shipping_price){
- $price = $shipping_price->price;
- $this->num_comp = 0;
- if($this->shipping_is_for === 'me'){
- $price = $shipping_price->price_comp;
- $this->num_comp = $shipping_price->num_comp;
-
- }
- $this->shipping_price = $price;
- $this->shipping_tax_rate = $shipping_price->tax_rate;
- $this->shipping_price_net = round($price / ((100+$shipping_price->tax_rate) / 100), 2);
- $this->shipping_tax = round($price / (100+$shipping_price->tax_rate) * 100, 2);
-
- $this->putYardExtra('num_comp', $this->num_comp);
- $this->putYardExtra('shipping_price', $this->shipping_price);
- $this->putYardExtra('shipping_tax_rate', $this->shipping_tax_rate);
- $this->putYardExtra('shipping_tax', $this->shipping_tax);
- $this->putYardExtra('shipping_price_net', $this->shipping_price_net);
- }
- }
-
- private function shippingPriceByTotal($prices, $total){
- foreach ($prices as $price){
- if($price->total_from > 0 && $price->total_to > 0){
- if($total >= $price->total_from && $total <= $price->total_to){
- return $price;
- }
- }
- }
- return false;
- }
- private function shippingPriceByWeight($prices, $weight){
- foreach ($prices as $price){
- if($price->weight_from > 0 && $price->weight_to > 0){
- if($weight >= $price->weight_from && $weight <= $price->weight_to){
- return $price;
- }
- }
- }
- return false;
- }
-
-
- public function shipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- return $this->numberFormat($this->shipping_price, $decimals, $decimalPoint, $thousandSeperator);
- }
-
- public function shippingNet($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- return $this->numberFormat($this->shipping_price_net, $decimals, $decimalPoint, $thousandSeperator);
- }
- //
- private function shippingTax($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- return $this->numberFormat($this->shipping_tax, $decimals, $decimalPoint, $thousandSeperator);
-
- }
-
-
- //netto
- public function subtotalWithShipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $subtotal = (float) $this->shipping_price_net + $this->subtotal(2, '.', '');
- return $this->numberFormat($subtotal, $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function taxWithShipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $total = $this->totalWithShipping(2, '.', '');
- // $totalTax = (float) $this->tax(2, '.', '') + $this->shipping_tax;
- $totalTax = $this->subtotalWithShipping(2, '.', '');
- return $this->numberFormat(($total - $totalTax), $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function totalWithShipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $total = (float) ($this->total(2, '.', '')) + $this->shipping_price;
- return $this->numberFormat($total, $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function weight($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $content = $this->getContent();
- $total = $content->reduce(function ($total, CartItem $cartItem) {
- return $total + ($cartItem->options->weight ? ($cartItem->options->weight*$cartItem->qty) : 0);
- }, 0);
-
- return $total;
- }
-
- public function points()
- {
- $content = $this->getContent();
- $total = $content->reduce(function ($total, CartItem $cartItem) {
- return $total + ($cartItem->options->points ? ($cartItem->options->points * $cartItem->qty) : 0);
- }, 0);
-
- return $total;
- }
-
- public function compCount()
- {
- $content = $this->getContent();
-
- $count = parent::count();
- $comp_count = $content->reduce(function ($comp_count, CartItem $cartItem) {
- return $cartItem->options->comp ? $comp_count + 1 : $comp_count;
- }, 0);
- return $count-$comp_count;
- }
-
- public function total($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $content = $this->getContent();
- $total = $content->reduce(function ($total, CartItem $cartItem) {
- return $total + ($cartItem->qty * $cartItem->price);
- }, 0);
-
- return $this->numberFormat($total, $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function tax($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $content = $this->getContent();
-
- $tax = $content->reduce(function ($tax, CartItem $cartItem) {
- $priceTax = $cartItem->price / (100 + $cartItem->taxRate) * $cartItem->taxRate;
- return $tax + ($cartItem->qty * $priceTax);
- }, 0);
-
- return $this->numberFormat($tax, $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function subtotal($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $content = $this->getContent();
-
- $subTotal = $content->reduce(function ($subTotal, CartItem $cartItem) {
- $price_net = $cartItem->price / ((100 + $cartItem->taxRate) / 100);
- return $subTotal + ($cartItem->qty * $price_net);
- }, 0);
-
- return $this->numberFormat($subTotal, $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function getCartItemByProduct($product_id, $set_price='with'){
- if($product = Product::find($product_id)) {
- $image = "";
- if ($product->images->count()) {
- $image = $product->images->first()->slug;
- }
- $price = $product->price;
- if($set_price === 'with'){
- $price = $product->getPriceWith(false, true);
- }
- $cartItem = $this->getCartItem($product->id, $product->getLang('name'), 1, $price, ['image' => $image, 'slug' => $product->slug, 'weight' => $product->weight, 'points' => $product->points]);
- $content = $this->getContent();
-
- if ($content->has($cartItem->rowId)){
- return $content->get($cartItem->rowId);
- }
- return $cartItem;
- }
- return null;
-
- }
-
-
- public function getCartItem($id, $name = null, $qty = null, $price = null, array $options = []){
- if ($id instanceof Buyable) {
- $cartItem = CartItem::fromBuyable($id, $qty ?: []);
- } elseif (is_array($id)) {
- $cartItem = CartItem::fromArray($id);
- } else {
- $cartItem = CartItem::fromAttributes($id, $name, $price, $options);
- }
- return $cartItem;
- }
-
- public function destroy()
- {
- $this->ysession->remove($this->yinstance);
- parent::destroy();
-
- }
-
- public function rowPriceNet(CartItem $row, $decimals = null, $decimalPoint = null, $thousandSeperator = null){
- $price = round($row->price / ((100 + $row->taxRate) /100), 4);
- return $this->numberFormat($price, $decimals, $decimalPoint, $thousandSeperator);
- }
-
- public function rowSubtotalNet(CartItem $row, $decimals = null, $decimalPoint = null, $thousandSeperator = null){
- $price = round($row->price / ((100 + $row->taxRate) /100), 4);
- return $this->numberFormat(($price * $row->qty), $decimals, $decimalPoint, $thousandSeperator);
- }
-
- public function getNumComp(){
- return $this->num_comp;
- }
-
- public function getCompProductBy($comp, $product_id=false){
- foreach ($this->content() as $row) {
- if($row->options->comp == $comp) {
- return $row->options->product_id;
- }
- }
- return false;
- }
-
- public function getContentByOrder(){
- $ret = [];
- $comp = [];
- foreach ($this->content() as $row) {
- if($row->options->comp){
- $comp[100+$row->options->comp] = $row;
- }else{
- $ret[] = $row;
- }
- }
- ksort($comp);
- $ret = array_merge($ret, $comp);
- return $ret;
- }
-
- */
protected function numberFormat($value, $decimals, $decimalPoint, $thousandSeperator)
{
if(is_null($decimals)){
diff --git a/app/Services/HomepartyUserCart.php b/app/Services/HomepartyUserCart.php
index e86d43b..659fb09 100644
--- a/app/Services/HomepartyUserCart.php
+++ b/app/Services/HomepartyUserCart.php
@@ -32,17 +32,34 @@ class HomepartyUserCart
public $ek_price;
public $income_price;
+ public $weight;
+ public $shipping_weight;
+
+
+ public $shipping_price;
+ public $shipping_tax_rate;
+ public $shipping_price_net;
+ public $shipping_tax;
+
+
private $homepartyUser;
public function __construct(HomepartyUser $homepartyUser)
{
$this->homepartyUser = $homepartyUser;
+ //is all total
$this->points = 0;
$this->price = 0;
$this->price_net = 0;
$this->ek_price = 0;
$this->income_price = 0;
+ $this->weight = 0;
+ $this->shipping_weight = 0;
+ $this->shipping_price = 0;
+ $this->shipping_tax_rate = 0;
+ $this->shipping_price_net = 0;
+ $this->shipping_tax = 0;
$this->calculateUserCart();
}
@@ -54,6 +71,7 @@ class HomepartyUserCart
$this->price_net += $order_item->geTotalPriceNet();
$this->ek_price += $order_item->geTotalEKPrice();
$this->income_price += $order_item->geTotalIncomePrice();
+ $this->weight += ($order_item->product->weight * $order_item->qty);
}
}
@@ -82,330 +100,12 @@ class HomepartyUserCart
{
return formatNumber($this->income_price);
}
- /* public static function getTaxRate()
+
+ public function getFormattedShippingPrice()
{
- return config('cart.tax');
- }
-
- public function putYardExtra($key, $value){
-
- $content = $this->getYContent();
- $content->put($key, $value);
- $this->ysession->put($this->yinstance, $content);
+ return formatNumber($this->shipping_price);
}
- public function getYardExtra($key){
- $content = $this->getYContent();
- if ($content->has($key)){
- return $content->get($key);
- }
- return false;
- }
-
- public function getShippingCountryName(){
-
- $shippingCountry = ShippingCountry::find($this->shipping_country_id);
- if($shippingCountry && $shippingCountry->country){
- return $shippingCountry->country->getLocated();
- }
- return "";
- }
- public function getShippingCountryCountryId()
- {
- $shippingCountry = ShippingCountry::find($this->shipping_country_id);
- if($shippingCountry && $shippingCountry->country){
- return $shippingCountry->country->id;
- }
- return 1; //default DE
- }
-
- public function getShippingCountryId()
- {
- return $this->shipping_country_id;
- }
-
-
- public function getYContent()
- {
- if (is_null($this->ysession->get($this->yinstance))) {
- return new Collection([]);
- }
- return $this->ysession->get($this->yinstance);
- }
-
-
- public function reCalculateShippingPrice(){
- $this->calculateShippingPrice();
- }
-
- public function setShippingCountryWithPrice($shipping_country_id, $shipping_is_for = 'ot')
- {
- $this->shipping_country_id = $shipping_country_id;
- $this->putYardExtra('shipping_country_id', $shipping_country_id);
-
- $this->shipping_is_for = $shipping_is_for;
- $this->putYardExtra('shipping_is_for', $shipping_is_for);
-
- $this->calculateShippingPrice();
-
- }
-
- private function calculateShippingPrice(){
-
- $shippingCountry = ShippingCountry::find($this->shipping_country_id);
- if(!$shippingCountry){
- return;
- }
- $shipping = $shippingCountry->shipping;
-
- if($this->weight() == 0){
- $shipping_price = $shipping->shipping_prices->first();
- $shipping_price->price = 0;
- $shipping_price->price_comp = 0;
- }else{
- //first by price
- $shipping_price = $this->shippingPriceByTotal($shipping->shipping_prices, $this->total(2, '.', ''));
- //sec by weight
- if(!$shipping_price){
- $shipping_price = $this->shippingPriceByWeight($shipping->shipping_prices, $this->weight());
- }
- //default
- if(!$shipping_price){
- $shipping_price = $shipping->shipping_prices->first();
- }
- }
- if($shipping_price){
- $price = $shipping_price->price;
- $this->num_comp = 0;
- if($this->shipping_is_for === 'me'){
- $price = $shipping_price->price_comp;
- $this->num_comp = $shipping_price->num_comp;
-
- }
- $this->shipping_price = $price;
- $this->shipping_tax_rate = $shipping_price->tax_rate;
- $this->shipping_price_net = round($price / ((100+$shipping_price->tax_rate) / 100), 2);
- $this->shipping_tax = round($price / (100+$shipping_price->tax_rate) * 100, 2);
-
- $this->putYardExtra('num_comp', $this->num_comp);
- $this->putYardExtra('shipping_price', $this->shipping_price);
- $this->putYardExtra('shipping_tax_rate', $this->shipping_tax_rate);
- $this->putYardExtra('shipping_tax', $this->shipping_tax);
- $this->putYardExtra('shipping_price_net', $this->shipping_price_net);
- }
- }
-
- private function shippingPriceByTotal($prices, $total){
- foreach ($prices as $price){
- if($price->total_from > 0 && $price->total_to > 0){
- if($total >= $price->total_from && $total <= $price->total_to){
- return $price;
- }
- }
- }
- return false;
- }
- private function shippingPriceByWeight($prices, $weight){
- foreach ($prices as $price){
- if($price->weight_from > 0 && $price->weight_to > 0){
- if($weight >= $price->weight_from && $weight <= $price->weight_to){
- return $price;
- }
- }
- }
- return false;
- }
-
-
- public function shipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- return $this->numberFormat($this->shipping_price, $decimals, $decimalPoint, $thousandSeperator);
- }
-
- public function shippingNet($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- return $this->numberFormat($this->shipping_price_net, $decimals, $decimalPoint, $thousandSeperator);
- }
- //
- private function shippingTax($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- return $this->numberFormat($this->shipping_tax, $decimals, $decimalPoint, $thousandSeperator);
-
- }
-
-
- //netto
- public function subtotalWithShipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $subtotal = (float) $this->shipping_price_net + $this->subtotal(2, '.', '');
- return $this->numberFormat($subtotal, $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function taxWithShipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $total = $this->totalWithShipping(2, '.', '');
- // $totalTax = (float) $this->tax(2, '.', '') + $this->shipping_tax;
- $totalTax = $this->subtotalWithShipping(2, '.', '');
- return $this->numberFormat(($total - $totalTax), $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function totalWithShipping($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $total = (float) ($this->total(2, '.', '')) + $this->shipping_price;
- return $this->numberFormat($total, $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function weight($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $content = $this->getContent();
- $total = $content->reduce(function ($total, CartItem $cartItem) {
- return $total + ($cartItem->options->weight ? ($cartItem->options->weight*$cartItem->qty) : 0);
- }, 0);
-
- return $total;
- }
-
- public function points()
- {
- $content = $this->getContent();
- $total = $content->reduce(function ($total, CartItem $cartItem) {
- return $total + ($cartItem->options->points ? ($cartItem->options->points * $cartItem->qty) : 0);
- }, 0);
-
- return $total;
- }
-
- public function compCount()
- {
- $content = $this->getContent();
-
- $count = parent::count();
- $comp_count = $content->reduce(function ($comp_count, CartItem $cartItem) {
- return $cartItem->options->comp ? $comp_count + 1 : $comp_count;
- }, 0);
- return $count-$comp_count;
- }
-
- public function total($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $content = $this->getContent();
- $total = $content->reduce(function ($total, CartItem $cartItem) {
- return $total + ($cartItem->qty * $cartItem->price);
- }, 0);
-
- return $this->numberFormat($total, $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function tax($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $content = $this->getContent();
-
- $tax = $content->reduce(function ($tax, CartItem $cartItem) {
- $priceTax = $cartItem->price / (100 + $cartItem->taxRate) * $cartItem->taxRate;
- return $tax + ($cartItem->qty * $priceTax);
- }, 0);
-
- return $this->numberFormat($tax, $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function subtotal($decimals = null, $decimalPoint = null, $thousandSeperator = null)
- {
- $content = $this->getContent();
-
- $subTotal = $content->reduce(function ($subTotal, CartItem $cartItem) {
- $price_net = $cartItem->price / ((100 + $cartItem->taxRate) / 100);
- return $subTotal + ($cartItem->qty * $price_net);
- }, 0);
-
- return $this->numberFormat($subTotal, $decimals, $decimalPoint, $thousandSeperator);
- }
-
-
- public function getCartItemByProduct($product_id, $set_price='with'){
- if($product = Product::find($product_id)) {
- $image = "";
- if ($product->images->count()) {
- $image = $product->images->first()->slug;
- }
- $price = $product->price;
- if($set_price === 'with'){
- $price = $product->getPriceWith(false, true);
- }
- $cartItem = $this->getCartItem($product->id, $product->getLang('name'), 1, $price, ['image' => $image, 'slug' => $product->slug, 'weight' => $product->weight, 'points' => $product->points]);
- $content = $this->getContent();
-
- if ($content->has($cartItem->rowId)){
- return $content->get($cartItem->rowId);
- }
- return $cartItem;
- }
- return null;
-
- }
-
-
- public function getCartItem($id, $name = null, $qty = null, $price = null, array $options = []){
- if ($id instanceof Buyable) {
- $cartItem = CartItem::fromBuyable($id, $qty ?: []);
- } elseif (is_array($id)) {
- $cartItem = CartItem::fromArray($id);
- } else {
- $cartItem = CartItem::fromAttributes($id, $name, $price, $options);
- }
- return $cartItem;
- }
-
- public function destroy()
- {
- $this->ysession->remove($this->yinstance);
- parent::destroy();
-
- }
-
- public function rowPriceNet(CartItem $row, $decimals = null, $decimalPoint = null, $thousandSeperator = null){
- $price = round($row->price / ((100 + $row->taxRate) /100), 4);
- return $this->numberFormat($price, $decimals, $decimalPoint, $thousandSeperator);
- }
-
- public function rowSubtotalNet(CartItem $row, $decimals = null, $decimalPoint = null, $thousandSeperator = null){
- $price = round($row->price / ((100 + $row->taxRate) /100), 4);
- return $this->numberFormat(($price * $row->qty), $decimals, $decimalPoint, $thousandSeperator);
- }
-
- public function getNumComp(){
- return $this->num_comp;
- }
-
- public function getCompProductBy($comp, $product_id=false){
- foreach ($this->content() as $row) {
- if($row->options->comp == $comp) {
- return $row->options->product_id;
- }
- }
- return false;
- }
-
- public function getContentByOrder(){
- $ret = [];
- $comp = [];
- foreach ($this->content() as $row) {
- if($row->options->comp){
- $comp[100+$row->options->comp] = $row;
- }else{
- $ret[] = $row;
- }
- }
- ksort($comp);
- $ret = array_merge($ret, $comp);
- return $ret;
- }
-
- */
protected function numberFormat($value, $decimals, $decimalPoint, $thousandSeperator)
{
if(is_null($decimals)){
diff --git a/app/Services/Payment.php b/app/Services/Payment.php
index 5f2b613..5fb8e40 100644
--- a/app/Services/Payment.php
+++ b/app/Services/Payment.php
@@ -120,8 +120,14 @@ class Payment
}
}
}
+
}
}
+ if($shopping_order->homeparty){
+ $shopping_order->setUserHistoryValue(['status' => 9]);
+ $shopping_order->homeparty->completed = 1;
+ $shopping_order->homeparty->save();
+ }
return $send_link;
}
diff --git a/config/app.php b/config/app.php
index 2b9a0f2..40992aa 100755
--- a/config/app.php
+++ b/config/app.php
@@ -67,7 +67,7 @@ return [
'default_mail' => env('APP_DEFAULT_MAIL', 'info@mivita.care'),
'info_test_mail' => env('APP_INFO_TEST_MAIL', 'devtest@mivita.care'),
-
+ 'main_tax' => env('APP_MAIN_TAX', 1.19),
/* 'url_backend' => env('APP_URL', 'http://mivita.local/'),
'url_backend' => env('APP_URL', 'http://mivita.local/'),
'url_backend' => env('APP_URL', 'http://mivita.local/'),
diff --git a/database/migrations/2019_02_23_161530_create_shopping_users_table.php b/database/migrations/2019_02_23_161530_create_shopping_users_table.php
index 29d1e84..740ece0 100644
--- a/database/migrations/2019_02_23_161530_create_shopping_users_table.php
+++ b/database/migrations/2019_02_23_161530_create_shopping_users_table.php
@@ -58,6 +58,7 @@ class CreateShoppingUsersTable extends Migration
$table->boolean('subscribed')->default(false);
$table->text('notice')->default(false);
+ $table->unsignedInteger('homeparty_id')->nullable();
$table->char('mode', 4)->nullable();
diff --git a/database/migrations/2019_02_23_163527_create_shopping_orders_table.php b/database/migrations/2019_02_23_163527_create_shopping_orders_table.php
index ef31084..d3e8065 100644
--- a/database/migrations/2019_02_23_163527_create_shopping_orders_table.php
+++ b/database/migrations/2019_02_23_163527_create_shopping_orders_table.php
@@ -23,6 +23,7 @@ class CreateShoppingOrdersTable extends Migration
$table->unsignedInteger('user_shop_id');
$table->unsignedInteger('member_id')->nullable();
+ $table->unsignedInteger('homeparty_id')->nullable();
$table->unsignedTinyInteger('payment_for')->nullable();
diff --git a/database/migrations/2019_02_23_163724_create_shopping_order_items_table.php b/database/migrations/2019_02_23_163724_create_shopping_order_items_table.php
index c1f409c..4cafb3a 100644
--- a/database/migrations/2019_02_23_163724_create_shopping_order_items_table.php
+++ b/database/migrations/2019_02_23_163724_create_shopping_order_items_table.php
@@ -19,6 +19,7 @@ class CreateShoppingOrderItemsTable extends Migration
$table->unsignedInteger('shopping_order_id');
$table->string('row_id', 40)->nullable();
$table->unsignedInteger('product_id');
+ $table->unsignedInteger('homeparty_id')->nullable();
$table->unsignedTinyInteger('comp')->nullable();
diff --git a/database/migrations/2020_10_15_151059_create_homeparties_table.php b/database/migrations/2020_10_15_151059_create_homeparties_table.php
index 7c69c84..96a1bcd 100644
--- a/database/migrations/2020_10_15_151059_create_homeparties_table.php
+++ b/database/migrations/2020_10_15_151059_create_homeparties_table.php
@@ -31,6 +31,9 @@ class CreateHomepartiesTable extends Migration
$table->string('token')->nullable();
$table->boolean('token_active')->default(true);
+ $table->text('settings')->nullable();
+ $table->text('order')->nullable();
+
$table->timestamps();
});
}
diff --git a/database/migrations/2020_10_15_151136_create_homeparty_users_table.php b/database/migrations/2020_10_15_151136_create_homeparty_users_table.php
index 3079a62..a892c1a 100644
--- a/database/migrations/2020_10_15_151136_create_homeparty_users_table.php
+++ b/database/migrations/2020_10_15_151136_create_homeparty_users_table.php
@@ -54,6 +54,10 @@ class CreateHomepartyUsersTable extends Migration
$table->text('notice')->nullable();
$table->char('mode', 4)->nullable();
+ $table->char('delivery', 6)->nullable();
+
+ $table->text('settings')->nullable();
+
$table->timestamps();
$table->softDeletes();
diff --git a/public/js/iq-homeparty-cart.js b/public/js/iq-homeparty-cart.js
index f6c43fc..d6a5967 100755
--- a/public/js/iq-homeparty-cart.js
+++ b/public/js/iq-homeparty-cart.js
@@ -13,6 +13,7 @@ var IqHomepartyCart = {
insert_show_total_order: '#insert_show_total_order',
insert_show_bonus: '#insert_show_bonus',
insert_show_bonus_host: '#insert_show_bonus_host',
+ select_delivery_option: '.select_delivery_option',
/*
comp_holder: '#holder_html_view_comp_product',
is_for: null,
@@ -32,7 +33,6 @@ var IqHomepartyCart = {
init: function () {
var _self = this;
_self.url = $(_self.form).attr('action');
- _self._log(_self.url);
$(_self.cart_holders).each(function (key, obj){
@@ -48,7 +48,6 @@ var IqHomepartyCart = {
},
setDatabase: function (oTable){
var _self = this;
- _self._log($(oTable));
_self.oTable = oTable;
},
reInitModal: function (){
@@ -78,7 +77,6 @@ var IqHomepartyCart = {
_self.remove_product($(this), _obj)
});
obj.find(_self.table_input).off('change').on('change', function(){
- _self._log($(this));
_self.update_input_table($(this), _obj);
});
@@ -86,7 +84,9 @@ var IqHomepartyCart = {
_self.remove_from_cart($(this), _obj);
});
-
+ obj.find(_self.select_delivery_option).off('change').on('change', function(){
+ _self.update_delivery_option($(this), _obj);
+ });
},
add_product: function (_obj, _holder){
@@ -133,6 +133,16 @@ var IqHomepartyCart = {
action: 'removeFromCart'
}).done(_self.refreshView);
},
+ update_delivery_option: function (_obj, _holder){
+ var _self = this;
+ _self.performRequest({
+ delivery: _obj.val(),
+ homeparty_id: _holder.data('homeparty-id'),
+ homeparty_user_id: _holder.data('homeparty-user-id'),
+ action: 'updateDeliveryOption'
+ }).done(_self.refreshView);
+ },
+
refreshView: function (data) {
var _self = IqHomepartyCart;
var obj = $(_self.cart_holder+data.data.homeparty_user_id)
@@ -187,98 +197,5 @@ var IqHomepartyCart = {
return 100;
}
return number;
- },
-
- /*
-
- showInit: function (){
- var _self = this;
- $(_self.btn_clear).on('click', function (){
- _self.performRequest({action: 'clearCart'})
- .done(_self.refreshDatabaseRefreshAndView)
- });
- $(_self.cart_input).on('change', function(){
- _self.update_input_cart($(this));
- });
- $(_self.remove_item).on('click', function(event){
- event.preventDefault();
- _self.update_cart_database($(this).data('product-id'), 0);
- });
- if(_self.is_for === 'me'){
- $('input[name^="'+_self.comp_products+'"]').on('change', function(){
- _self.update_comp_product($(this));
- });
- }
- },
- update_shipping_state : function (_obj){
- var _self = this;
- var id = parseInt(_obj.val());
- var is_for = _obj.data('is-for');
- _self.performRequest({shipping_country_id: id, shipping_is_for: is_for, action: 'updateShippingCountry'})
- .done(_self.refreshItemsAndView);
- },
- update_input_table: function (_obj){
- var _self = this;
- var qty = parseInt(_obj.val());
- qty = _self.checkNumber(qty);
- _obj.val(qty);
- _self.update_cart(_obj.data('product-id'), qty);
- },
- update_input_cart: function (_obj){
- var _self = this;
- var qty = parseInt(_obj.val());
- qty = _self.checkNumber(qty);
- _obj.val(qty);
- _self.update_cart_database(_obj.data('product-id'), qty);
- },
- update_comp_product: function (_obj){
- var _self = this;
- _self.performRequest({comp_product_id: _obj.val(), comp_num: _obj.data('comp_num'), count_comp_products: $('input[name="'+_self.count_comp_products+'"]').val(), action: 'updateCompProduct'})
- .done(_self.refreshItemsAndView);
- },
-
- update_cart_database: function (product_id, qty){
- var _self = this;
- _self.performRequest({product_id: product_id, qty: qty, action: 'updateCart'})
- .done(_self.refreshDatabaseAndView);
- },
- update_cart: function (product_id, qty){
- var _self = this;
- _self.performRequest({product_id: product_id, qty: qty, action: 'updateCart'})
- .done(_self.refreshItemsAndView);
- },
- refreshItemsAndView: function (data){
- var _self = IqShoppingCart;
- $(_self.cart_holder).html(data.html_cart);
- $(_self.comp_holder).html(data.html_comp);
- _self.showInit();
-
- },
- refreshDatabaseAndView: function (data) {
- var _self = IqShoppingCart;
- $(_self.cart_holder).html(data.html_cart);
- $(_self.comp_holder).html(data.html_comp);
-
- var input = $(_self.table).find('input[name="product_qty_'+data.data.product_id+'"]');
- input.val(data.data.qty);
- _self.showInit();
- },
- refreshDatabaseRefreshAndView : function (data){
- var _self = IqShoppingCart;
- $(_self.cart_holder).html(data.html_cart);
- $(_self.comp_holder).html(data.html_comp);
-
- _self.showInit();
- _self.oTable.draw();
- },
- checkNumber : function(number){
- if(number < 0 || isNaN(number)){
- return 0;
- }
- if(number >= 100){
- return 100;
- }
- return number;
- },
- */
+ }
};
\ No newline at end of file
diff --git a/resources/views/admin/product/form.blade.php b/resources/views/admin/product/form.blade.php
index f45df33..cd49dcf 100755
--- a/resources/views/admin/product/form.blade.php
+++ b/resources/views/admin/product/form.blade.php
@@ -26,9 +26,9 @@
-
-
+ @if(!$shopping_order->shopping_user->is_from === 'homeparty')
+
+
+
@if($shopping_order->shopping_user->is_from === 'user_order')
@if($shopping_order->shopping_user->is_for === 'me')
@@ -256,6 +258,7 @@
@endif
+ @endif
@@ -278,6 +281,10 @@
@if($shopping_order->shopping_user->is_from === 'shopping')
Kundenbestellung über Shop
@endif
+ @if($shopping_order->shopping_user->is_from === 'homeparty')
+ Beraterbestellung für eine Homeparty
+
+ @endif
-
+ @if(!$shopping_order->shopping_user->is_from === 'homeparty')
+
+ @else
+ @if($shopping_order->homeparty)
+
+ @php($homeparty = $shopping_order->homeparty)
+ @if($homeparty->homeparty_host)
+
Bestellung Gastgeber/in {{$homeparty->homeparty_host->billing_firstname}} {{$homeparty->homeparty_host->billing_lastname}}
+ @include('admin.sales._detail_homparty', ['homeparty'=>$shopping_order->homeparty, 'homeparty_guest' => $homeparty->homeparty_host])
+ @endif
+
+ @if($homeparty->homeparty_guests)
+ @php($g_count = 1)
+ @foreach($homeparty->homeparty_guests as $homeparty_guest)
+
+
Bestellung {!! $g_count++ !!}. Gast {{$homeparty_guest->billing_firstname}} {{$homeparty_guest->billing_lastname}}
+ @include('admin.sales._detail_homparty', ['homeparty'=>$shopping_order->homeparty, 'homeparty_guest' => $homeparty_guest])
+ @endforeach
+ @endif
+
+
+ @include('admin.sales._detail_homparty_total', ['homeparty' => $homeparty])
+
+ @endif
+ @endif
diff --git a/resources/views/admin/sales/_detail_homparty.blade.php b/resources/views/admin/sales/_detail_homparty.blade.php
new file mode 100644
index 0000000..263842a
--- /dev/null
+++ b/resources/views/admin/sales/_detail_homparty.blade.php
@@ -0,0 +1,246 @@
+@if($homeparty_guest && $homeparty_guest->homeparty_user_order_items->count() || $homeparty_guest->is_host)
+
+
+
+
+ {{__('Bild')}}
+ {{__('Produkt')}}
+ {{__('Anzahl')}}
+ {{__('Marge')}}
+ {{__('EK-Preis')}}
+ {{__('Points')}}
+ {{__('Verdienst')}}
+ {{__('VK-Preis')}}
+
+
+
+ @foreach($homeparty_guest->homeparty_user_order_items as $value)
+
+
+ @if(count($value->product->images))
+
+ @endif
+
+
+ {{ $value->product->name }}
+
+
Inhalt: {{ $value->product->contents }}
+
Art.-Nr.: {{ $value->product->number }}
+
+
+
+ {{$value->qty}}
+
+
+ {{ $value->margin }}%
+
+
+ {{ $value->getFormattedTotalEKPrice() }} €
+
+
+ {{ $value->getFormattedTotalPoints() }}
+
+
+ {{ $value->getFormattedTotalIncomePrice() }} €
+
+
+ {{ $value->getFormattedTotalPrice() }} €
+
+
+ @endforeach
+
+
+
+ @php($user_cart = $homeparty->order['user_carts'][$homeparty_guest->id])
+ @php($hp_order = $homeparty->order)
+
+ @if(!$homeparty_guest->is_host)
+
+ @if($homeparty_guest->getDelivery() === 'direct')
+
+ Versandkosten
+
+
+ {{ Util::formatNumber($user_cart['shipping_price'])}} €
+
+ @endif
+
+
+ Gesamt:
+ {{Util::formatNumber($user_cart['ek_price'])}} €
+ {{$user_cart['points']}}
+ {{Util::formatNumber($user_cart['income_price'])}} €
+ {{Util::formatNumber($user_cart['price'])}} €
+
+ @else
+ @if($hp_order['is_bonus'])
+
+ @endif
+ @if($hp_order['is_bonus_coupon'])
+
+ @endif
+ @if($hp_order['is_bonus'])
+
+ @endif
+
+
+ Summen:
+ {{Util::formatNumber($user_cart['ek_price'])}} €
+ {{$user_cart['points']}}
+ {{Util::formatNumber($user_cart['income_price'])}} €
+ {{Util::formatNumber($user_cart['price'])}} €
+
+
+ @endif
+
+
+
+
+ @if($homeparty_guest->is_host || $homeparty_guest->getDelivery() === 'direct')
+
+
+
+
+
+ Lieferadresse
+
+ @if($homeparty_guest->same_as_billing)
+
+ @if($homeparty_guest->billing_company)
+
+
Firma
+ {{ $homeparty_guest->billing_company }}
+
+ @endif
+
+
+
Anrede
+ {{ \App\Services\HTMLHelper::getSalutationLang($homeparty_guest->billing_salutation) }}
+
+
+
Vorname
+ {{ $homeparty_guest->billing_firstname }}
+
+
+
Nachname
+ {{ $homeparty_guest->billing_lastname }}
+
+
+
+
+
Straße
+ {{ $homeparty_guest->billing_address }}
+
+
+
Zusatz
+ {{ $homeparty_guest->billing_address_2 }}
+
+
+
PLZ
+ {{ $homeparty_guest->billing_zipcode }}
+
+
+
Stadt
+ {{ $homeparty_guest->billing_city }}
+
+
+
E-Mail
+ {{ $homeparty_guest->billing_email }}
+
+
+
Telefon
+ {{ $homeparty_guest->billing_phone }}
+
+
+
Land
+ {{ $homeparty_guest->billing_country->getLocated() }}
+
+
+ @else
+
+ @if($homeparty_guest->shipping_company)
+
+
Firma
+ {{ $homeparty_guest->shipping_company }}
+
+ @endif
+
+
+
Anrede
+ {{ \App\Services\HTMLHelper::getSalutationLang($homeparty_guest->shipping_salutation) }}
+
+
+
Vorname
+ {{ $homeparty_guest->shipping_firstname }}
+
+
+
Nachname
+ {{ $homeparty_guest->shipping_lastname }}
+
+
+
+
+
Straße
+ {{ $homeparty_guest->shipping_address }}
+
+
+
Zusatz
+ {{ $homeparty_guest->shipping_address_2 }}
+
+
+
PLZ
+ {{ $homeparty_guest->shipping_zipcode }}
+
+
+
Stadt
+ {{ $homeparty_guest->shipping_city }}
+
+
+
E-Mail
+ {{ $homeparty_guest->shipping_email }}
+
+
+
Telefon
+ {{ $homeparty_guest->shipping_phone }}
+
+
+
Land
+ {{ $homeparty_guest->shipping_country->getLocated() }}
+
+
+ @endif
+
+ @endif
+
+@else
+ Keine Bestellung
+@endif
\ No newline at end of file
diff --git a/resources/views/admin/sales/_detail_homparty_total.blade.php b/resources/views/admin/sales/_detail_homparty_total.blade.php
new file mode 100644
index 0000000..8a50629
--- /dev/null
+++ b/resources/views/admin/sales/_detail_homparty_total.blade.php
@@ -0,0 +1,58 @@
+
+
+
+
+ Gesamt
+ {{__('EK-Preis')}}
+ {{__('Points')}}
+ {{__('Verdienst')}}
+ {{__('VK-Preis')}}
+
+
+
+
+
+
+
+ @php($hp_order = $homeparty->order)
+
+ @if($hp_order['is_bonus'])
+
+ @endif
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/views/emails/checkout.blade.php b/resources/views/emails/checkout.blade.php
index 0740367..fa3b5b9 100644
--- a/resources/views/emails/checkout.blade.php
+++ b/resources/views/emails/checkout.blade.php
@@ -165,10 +165,35 @@
@if($shopping_order->shopping_user->is_from === 'shopping')
{{__('email.checkout_mail_hl1')}}
@endif
+ @if($shopping_order->shopping_user->is_from === 'homeparty')
+ {{ __('navigation.my_homeparty') }} / {{ $shopping_order->homeparty->name }} - {{ $shopping_order->homeparty->date }}
+ {{__('email.checkout_mail_hl1')}}
+ @endif
+ @if($shopping_order->shopping_user->is_from === 'homeparty')
+
+
+ @php($homeparty = $shopping_order->homeparty)
+ @if($homeparty->homeparty_host)
+ Bestellung Gastgeber/in {{$homeparty->homeparty_host->billing_firstname}} {{$homeparty->homeparty_host->billing_lastname}}
+ @include('emails.homeparty_detail', ['homeparty'=>$shopping_order->homeparty, 'homeparty_guest' => $homeparty->homeparty_host])
+ @endif
+
+ @if($homeparty->homeparty_guests)
+ @php($g_count = 1)
+ @foreach($homeparty->homeparty_guests as $homeparty_guest)
+
+ Bestellung {!! $g_count++ !!}. Gast {{$homeparty_guest->billing_firstname}} {{$homeparty_guest->billing_lastname}}
+ @include('emails.homeparty_detail', ['homeparty'=>$shopping_order->homeparty, 'homeparty_guest' => $homeparty_guest])
+ @endforeach
+ @endif
+
+
+ @include('emails.homeparty_detail_total', ['homeparty' => $homeparty])
+ @else
Produkt
@@ -256,6 +281,7 @@
+ @endif
diff --git a/resources/views/emails/checkout_status.blade.php b/resources/views/emails/checkout_status.blade.php
index 49dea99..6aad9ea 100644
--- a/resources/views/emails/checkout_status.blade.php
+++ b/resources/views/emails/checkout_status.blade.php
@@ -211,10 +211,35 @@
@if($shopping_order->shopping_user->is_from === 'shopping')
{{__('email.checkout_mail_hl1')}}
@endif
+ @if($shopping_order->shopping_user->is_from === 'homeparty')
+ {{ __('navigation.my_homeparty') }} / {{ $shopping_order->homeparty->name }} - {{ $shopping_order->homeparty->date }}
+ {{__('email.checkout_mail_hl1')}}
+ @endif
+ @if($shopping_order->shopping_user->is_from === 'homeparty')
+
+
+ @php($homeparty = $shopping_order->homeparty)
+ @if($homeparty->homeparty_host)
+ Bestellung Gastgeber/in {{$homeparty->homeparty_host->billing_firstname}} {{$homeparty->homeparty_host->billing_lastname}}
+ @include('emails.homeparty_detail', ['homeparty'=>$shopping_order->homeparty, 'homeparty_guest' => $homeparty->homeparty_host])
+ @endif
+
+ @if($homeparty->homeparty_guests)
+ @php($g_count = 1)
+ @foreach($homeparty->homeparty_guests as $homeparty_guest)
+
+ Bestellung {!! $g_count++ !!}. Gast {{$homeparty_guest->billing_firstname}} {{$homeparty_guest->billing_lastname}}
+ @include('emails.homeparty_detail', ['homeparty'=>$shopping_order->homeparty, 'homeparty_guest' => $homeparty_guest])
+ @endforeach
+ @endif
+
+
+ @include('emails.homeparty_detail_total', ['homeparty' => $homeparty])
+ @else
Produkt
@@ -302,6 +327,7 @@
+ @endif
diff --git a/resources/views/emails/homeparty_detail.blade.php b/resources/views/emails/homeparty_detail.blade.php
new file mode 100644
index 0000000..5183198
--- /dev/null
+++ b/resources/views/emails/homeparty_detail.blade.php
@@ -0,0 +1,142 @@
+@if($homeparty_guest && $homeparty_guest->homeparty_user_order_items->count() || $homeparty_guest->is_host)
+
+
+
+
+ {{__('Produkt')}}
+ {{__('Anzahl')}}
+ {{__('VK-Preis')}}
+
+
+ @foreach($homeparty_guest->homeparty_user_order_items as $value)
+
+
+
+ {{ $value->product->name }}
+ Art.-Nr.: {{ $value->product->number }}
+
+
+ {{$value->qty}}
+
+
+ {{ $value->getFormattedTotalPrice() }} €
+
+
+
+ @endforeach
+
+ @php($user_cart = $homeparty->order['user_carts'][$homeparty_guest->id])
+ @php($hp_order = $homeparty->order)
+
+ @if(!$homeparty_guest->is_host)
+
+
+ @if($homeparty_guest->getDelivery() === 'host')
+ Lieferung an Gastgeber
+ @endif
+ @if($homeparty_guest->getDelivery() === 'direct')
+ Lieferung direkt an den Gast
+ @endif
+
+
+ @if($homeparty_guest->getDelivery() === 'direct')
+
+ Versandkosten
+
+ {{ Util::formatNumber($user_cart['shipping_price'])}} €
+
+ @endif
+
+
+ Gesamt:
+ {{Util::formatNumber($user_cart['price'])}} €
+
+ @else
+ @if($hp_order['is_bonus'])
+
+ Gutschrift Homeparty Gutschein
+
+ - {{ Util::formatNumber($hp_order['bonus_value']) }} €
+
+ @endif
+ @if($hp_order['is_bonus_coupon'])
+
+ Gutschrift Bonus
+
+ - {{ Util::formatNumber($hp_order['bonus_coupon']) }} €
+
+ @endif
+ @if($hp_order['is_bonus'])
+
+ @endif
+
+ Versandkosten:
+
+ {{Util::formatNumber($user_cart['shipping_price'])}} €
+
+
+ Summen:
+ {{Util::formatNumber($user_cart['price'])}} €
+
+ @endif
+
+
+ @if($homeparty_guest->is_host || $homeparty_guest->getDelivery() === 'direct')
+
+
+
+
+
+
+
+ @if($homeparty_guest->same_as_billing)
+ @if($homeparty_guest->billing_company)
+ {{ $homeparty_guest->billing_company }}
+ @endif
+
+ {{ $homeparty_guest->billing_firstname }}
+ {{ $homeparty_guest->billing_lastname }}
+
+
+ {{ $homeparty_guest->billing_address }}
+ @if($homeparty_guest->billing_address_2)
+ {{ $homeparty_guest->billing_address_2 }}
+ @endif
+
+ {{ $homeparty_guest->billing_zipcode }}
+ {{ $homeparty_guest->billing_city }}
+ {{ $homeparty_guest->billing_country->getLocated() }}
+
+ @if($homeparty_guest->billing_phone)
+ {{ $homeparty_guest->billing_phone }}
+ @endif
+ @else
+ @if($homeparty_guest->shipping_company)
+ {{ $homeparty_guest->shipping_company }}
+ @endif
+
+ {{ $homeparty_guest->shipping_firstname }}
+ {{ $homeparty_guest->shipping_lastname }}
+
+
+ {{ $homeparty_guest->shipping_address }}
+ @if($homeparty_guest->shipping_address_2)
+ {{ $homeparty_guest->shipping_address_2 }}
+ @endif
+
+ {{ $homeparty_guest->shipping_zipcode }}
+ {{ $homeparty_guest->shipping_city }}
+ {{ $homeparty_guest->shipping_country->getLocated() }}
+
+ @if($homeparty_guest->shipping_phone)
+ {{ $homeparty_guest->shipping_phone }}
+ @endif
+ @endif
+
+
+
+
+
+
+ @endif
+@endif
diff --git a/resources/views/emails/homeparty_detail_total.blade.php b/resources/views/emails/homeparty_detail_total.blade.php
new file mode 100644
index 0000000..7b7e56d
--- /dev/null
+++ b/resources/views/emails/homeparty_detail_total.blade.php
@@ -0,0 +1,38 @@
+
+@php($hp_order = $homeparty->order)
+
+
+
+ Gesamt
+ {{__('VK-Preis')}}
+
+ @if($hp_order['is_bonus'])
+
+ @endif
+
+
+
+
+
+
+
diff --git a/resources/views/user/homeparty/guests.blade.php b/resources/views/user/homeparty/guests.blade.php
index 6280878..01bd057 100644
--- a/resources/views/user/homeparty/guests.blade.php
+++ b/resources/views/user/homeparty/guests.blade.php
@@ -3,7 +3,9 @@
@section('content')
{{ __('navigation.my_homeparty') }} / {{ $homeparty->name }} - {{ $homeparty->date }}
- Neue Gast anlegen
+ @if(!$homeparty->completed)
+ Neue Gast anlegen
+ @endif
@@ -24,6 +26,8 @@
{{-- offen ... --}}
+ @if(!$homeparty->completed)
+
+ @endif
diff --git a/resources/views/user/homeparty/index.blade.php b/resources/views/user/homeparty/index.blade.php
index 0abaefe..d025489 100644
--- a/resources/views/user/homeparty/index.blade.php
+++ b/resources/views/user/homeparty/index.blade.php
@@ -14,8 +14,12 @@
+ @if(!$homeparty->completed)
+
@@ -27,6 +31,7 @@
+ @endif
Umsatz
-
0
+
@if(isset($homeparty->order['price'])){{Util::formatNumber($homeparty->order['price'])}}@endif
Points
-
0
+
@if(isset($homeparty->order['points'])){{$homeparty->order['points']}}@endif
+ @if(!$homeparty->completed)
+ @endif
diff --git a/resources/views/user/homeparty/order.blade.php b/resources/views/user/homeparty/order.blade.php
index 00e6c77..82428ee 100644
--- a/resources/views/user/homeparty/order.blade.php
+++ b/resources/views/user/homeparty/order.blade.php
@@ -84,6 +84,10 @@
zurück
+ @if($userHistoryPaymentOrder && $userHistoryPaymentOrder->status > 2)
+ Eine Zahlung wurde ausgeführt. Status: {{ trans('payment.status.'.$userHistoryPaymentOrder->getStatusType())}}
+ @endif
+
{!! Form::open(['url' => route('user_homeparty_order', [$homeparty->id]), 'class' => 'form-horizontal', 'id'=>'homeparty-order-form']) !!}
@@ -92,10 +96,12 @@
Bestellung anlegen
+ @if(!$homeparty->completed)
+ @endif
@@ -103,7 +109,11 @@
-
Lieferadresse Gastgeber/in
+
Lieferadresse Gastgeber/in
+ @if(!$homeparty->completed)
+
+ @endif
+
@include('user.homeparty._address', ['homeparty_user' => $homeparty->homeparty_host])
@@ -128,6 +138,7 @@
Bestellung Gastgeber/in {{$homeparty->homeparty_host->billing_firstname}} {{$homeparty->homeparty_host->billing_lastname}}
+ @if(!$homeparty->completed)
Produkt hinzufügen
+ @endif
@@ -156,6 +168,7 @@
Bestellung {!! $g_count++ !!}. Gast {{$homeparty_guest->billing_firstname}} {{$homeparty_guest->billing_lastname}}
+ @if(!$homeparty->completed)
Produkt hinzufügen
+ @endif
@@ -186,31 +200,32 @@
- {{-- TODO Berechnung des WK --}}
-
@include('user.homeparty.show_total_order', ['homeparty' => $homeparty])
-
-
- @if($homeparty->homeparty_host && $homeparty->homeparty_host->isAddress())
-
- bestätigen und weiter zur Kasse
-
-
-
Du wirst auf unseren checkout Server weitergeletet, die Verbindung ist SSL verschlüsselt.
- @else
-
- Die Bestellung kann erst abgesendet werden, wenn die Lieferadresse Gastgeber/in angelegt ist.
+ @if(!$homeparty->completed)
+
+ @if($homeparty->homeparty_host && $homeparty->homeparty_host->isAddress())
+
+ bestätigen und weiter zur Kasse
+
+
Du wirst auf unseren checkout Server weitergeletet, die Verbindung ist SSL verschlüsselt.
+ @else
+
+ Die Bestellung kann erst abgesendet werden, wenn die Lieferadresse Gastgeber/in angelegt ist.
+
+ @endif
@endif
+ @if(!$homeparty->completed)
Homparty verwalten
+ @endif
zurück zur Übersicht
{!! Form::close() !!}
diff --git a/resources/views/user/homeparty/show_calc_bonus_host.blade.php b/resources/views/user/homeparty/show_calc_bonus_host.blade.php
index c1d0e15..71fcad9 100644
--- a/resources/views/user/homeparty/show_calc_bonus_host.blade.php
+++ b/resources/views/user/homeparty/show_calc_bonus_host.blade.php
@@ -27,8 +27,8 @@
Gesamt:
diff --git a/resources/views/user/homeparty/show_products_order.blade.php b/resources/views/user/homeparty/show_products_order.blade.php
index fc8c5eb..241cc45 100644
--- a/resources/views/user/homeparty/show_products_order.blade.php
+++ b/resources/views/user/homeparty/show_products_order.blade.php
@@ -1,4 +1,4 @@
-@if($homeparty_guest && $homeparty_guest->homeparty_user_order_items->count())
+@if($homeparty_guest && $homeparty_guest->homeparty_user_order_items->count() || $homeparty_guest->is_host)
@@ -27,11 +27,14 @@
Inhalt: {{ $value->product->contents }}
Art.-Nr.: {{ $value->product->number }}
-
+ @if(!$homeparty->completed)
+
+ @endif
+ @if(!$homeparty->completed)
+ @else
+ {{$value->qty}}
+ @endif
{{ $value->margin }}%
@@ -67,21 +73,36 @@
@php($user_cart = \App\Services\HomepartyCart::getUserCart($homeparty_guest->id))
@if(!$homeparty_guest->is_host)
- {{--
+ @if($homeparty_guest->getDelivery() === 'direct')
+
Versandkosten
- 12
- 25,00 €
+
+ {{$user_cart->getFormattedShippingPrice()}} €
- --}}
+ @endif
+
Gesamt:
{{$user_cart->getFormattedEkPrice()}} €
diff --git a/resources/views/user/homeparty/show_total_order.blade.php b/resources/views/user/homeparty/show_total_order.blade.php
index fac0e8f..06f245b 100644
--- a/resources/views/user/homeparty/show_total_order.blade.php
+++ b/resources/views/user/homeparty/show_total_order.blade.php
@@ -57,13 +57,12 @@
@endif
-
@if(\App\Services\HomepartyCart::$is_bonus)
@@ -73,7 +72,7 @@
Gesamtsummen:
- {{\App\Services\HomepartyCart::getFormattedEkPrice()}}
+ {{\App\Services\HomepartyCart::getFormattedEkPrice()}} €
{{\App\Services\HomepartyCart::getFormattedPoints()}}
{{\App\Services\HomepartyCart::getFormattedIncomePrice()}} €
{{\App\Services\HomepartyCart::getFormattedPrice()}} €
diff --git a/resources/views/web/templates/checkout.blade.php b/resources/views/web/templates/checkout.blade.php
index 7c6ec6f..c4c576d 100644
--- a/resources/views/web/templates/checkout.blade.php
+++ b/resources/views/web/templates/checkout.blade.php
@@ -146,13 +146,16 @@
+
{!! Form::open(['url' => route('checkout.checkout_card_final'), 'class' => 'row clearfix', 'id'=>'checkout_card_final']) !!}
{!! Form::hidden('selected_country', '') !!}
{!! Form::hidden('is_for', $shopping_user->is_for) !!}
{!! Form::hidden('is_from', $shopping_user->is_from) !!}
+ {!! Form::hidden('homeparty_id', $shopping_user->homeparty_id) !!}
- @if (\Session::has('elv-managemandate'))
+
+ @if (\Session::has('elv-managemandate'))
@@ -626,7 +629,7 @@
{!! Form::radio('payment_method', 'fnc#MIV', '') !!}
Rechnungskauf
-
+
@endif
@@ -798,31 +801,48 @@
Zwischensumme:
+ @if($shopping_user->is_from !== 'homeparty')
+
{{ Yard::instance('shopping')->shipping() }} €
Versandkosten:
+ @endif
@endif
+ @if($shopping_user->is_from !== 'homeparty')
- {{ Yard::instance('shopping')->getShippingCountryName() }}
- Lieferland:
-
+ {{ Yard::instance('shopping')->getShippingCountryName() }}
+ Lieferland:
+
-
-
- {{ Yard::instance('shopping')->subtotalWithShipping() }} €
- Summe ohne MwSt:
-
+
-
- {{ Yard::instance('shopping')->taxWithShipping() }} €
- zzgl. {{-- Yard::getTaxRate() --}} MwSt:
-
+
+ {{ Yard::instance('shopping')->subtotalWithShipping() }} €
+ Summe ohne MwSt:
+
+
+ {{ Yard::instance('shopping')->taxWithShipping() }} €
+ zzgl. {{-- Yard::getTaxRate() --}} MwSt:
+
+ @else
+
+
+
+ {!! $shopping_data['shop_price_net'] !!} €
+ Summe ohne MwSt:
+
+
+
+ {!! $shopping_data['shop_price_tax'] !!} €
+ zzgl. {{-- Yard::getTaxRate() --}} MwSt:
+
+ @endif
diff --git a/routes/web.php b/routes/web.php
index 3b5b6b7..180a4a7 100755
--- a/routes/web.php
+++ b/routes/web.php
@@ -266,16 +266,16 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
//user homeparty
- Route::get('/user/homepartys', 'User\HomePartyController@index')->name('user_homepartys');
- Route::get('/user/homeparty/detail/{id?}', 'User\HomePartyController@detail')->name('user_homeparty_detail');
- Route::post('/user/homeparty/detail/{id?}', 'User\HomePartyController@store')->name('user_homeparty_detail');
- Route::get('/user/homeparty/guests/{id?}', 'User\HomePartyController@guests')->name('user_homeparty_guests');
- Route::get('/user/homeparty/guest/detail/{id?}/{gid?}', 'User\HomePartyController@guestDetail')->name('user_homeparty_guest_detail');
- Route::post('/user/homeparty/guest/detail/{id?}/{gid?}', 'User\HomePartyController@guestStore')->name('user_homeparty_guest_detail');
- Route::get('/user/homeparty/order/{id?}', 'User\HomePartyController@order')->name('user_homeparty_order');
- Route::post('/user/homeparty/order/{id?}', 'User\HomePartyController@orderStore')->name('user_homeparty_order');
- Route::get('/user/homeparty/delete/{do}/{id?}/{gid?}', 'User\HomePartyController@delete')->name('user_homeparty_delete');
- Route::get('/user/homeparty/datatable', 'User\HomePartyController@datatable')->name('user_homeparty_datatable');
+ Route::get('/user/homepartys', 'User\HomepartyController@index')->name('user_homepartys');
+ Route::get('/user/homeparty/detail/{id?}', 'User\HomepartyController@detail')->name('user_homeparty_detail');
+ Route::post('/user/homeparty/detail/{id?}', 'User\HomepartyController@store')->name('user_homeparty_detail');
+ Route::get('/user/homeparty/guests/{id?}', 'User\HomepartyController@guests')->name('user_homeparty_guests');
+ Route::get('/user/homeparty/guest/detail/{id?}/{gid?}', 'User\HomepartyController@guestDetail')->name('user_homeparty_guest_detail');
+ Route::post('/user/homeparty/guest/detail/{id?}/{gid?}', 'User\HomepartyController@guestStore')->name('user_homeparty_guest_detail');
+ Route::get('/user/homeparty/order/{id?}', 'User\HomepartyController@order')->name('user_homeparty_order');
+ Route::post('/user/homeparty/order/{id?}', 'User\HomepartyController@orderStore')->name('user_homeparty_order');
+ Route::get('/user/homeparty/delete/{do}/{id?}/{gid?}', 'User\HomepartyController@delete')->name('user_homeparty_delete');
+ Route::get('/user/homeparty/datatable', 'User\HomepartyController@datatable')->name('user_homeparty_datatable');
//products images
Route::post('/user/shop_on_site/upload/image', 'UserShopController@uploadOnSiteImage')->name('user_shop_on_site_upload_image');