User Order all Margins / Checkout

This commit is contained in:
Kevin Adametz 2021-01-22 15:54:51 +01:00
parent a96d7d5c77
commit 224bf9e951
92 changed files with 3551 additions and 561 deletions

View file

@ -12,6 +12,7 @@ use App\Models\PaymentTransaction;
use App\Models\ShippingCountry;
use App\Models\ShoppingOrder;
use App\Models\ShoppingOrderItem;
use App\Models\ShoppingOrderMargin;
use App\Models\ShoppingPayment;
use App\Models\ShoppingUser;
use App\Services\CustomerPriority;
@ -125,14 +126,13 @@ class CheckoutController extends Controller
if($is_from !== 'shopping' && Util::getAuthUser()){
$user = Util::getAuthUser();
$payment_methods = $user->payment_methods;
$user_payment_methods = $user->payment_methods;
$payment_data = $user->account->payment_data;
}else{
$payment_methods = PaymentMethod::getDefaultAsArray()->toArray();
$user_payment_methods = PaymentMethod::getDefaultAsArray()->toArray();
$payment_data = false;
}
$payment_methods_active = \App\Models\PaymentMethod::where('active', true)->get()->pluck( 'id', 'short')->toArray();
$data = [
'is_from' => $is_from,
'is_for' => $is_for,
@ -140,8 +140,7 @@ class CheckoutController extends Controller
'user_shop' => Util::getUserShop(),
'shopping_user' => $shopping_user,
'shopping_mode' => Util::getUserShoppingMode(),
'payment_methods' => $payment_methods,
'payment_methods_active' => $payment_methods_active,
'user_payment_methods' => $user_payment_methods,
'identifier' => $identifier,
'payment_data' => $payment_data,
'back' => url()->previous(),
@ -402,18 +401,25 @@ class CheckoutController extends Controller
private function makeShoppingOrder($shopping_user){
$user_shop = Util::getUserShop();
$discount = 0;
if(Yard::instance('shopping')->getYardMargin()){
$discount = Yard::instance('shopping')->getYardMargin()->net_discount;
}
$data = [
'shopping_user_id' => $shopping_user->id,
'auth_user_id' => $shopping_user->auth_user_id,
'country_id' => Yard::instance('shopping')->getShippingCountryId(),
'payment_for' => Util::getUserPaymentFor(),
'total' => Yard::instance('shopping')->total(2, '.', ''),
'subtotal_full' => Yard::instance('shopping')->subtotal(2, '.', '', false),
'discount' => $discount,
'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, '.', ''),
'subtotal_shipping' => Yard::instance('shopping')->subtotalWithShipping(2, '.', ''),
'tax' => Yard::instance('shopping')->taxWithShipping(2, '.', ''),
'total_without_credit' => Yard::instance('shopping')->totalWithShippingWithoutCredit(2, '.', ''),
'payment_credit' => Yard::instance('shopping')->totalfromCredit(2, '.', ''),
'total_shipping' => Yard::instance('shopping')->totalWithShipping(2, '.', ''),
'points' => Yard::instance('shopping')->points(),
'weight' => Yard::instance('shopping')->weight(),
@ -433,8 +439,9 @@ class CheckoutController extends Controller
if(!$shopping_order){
$shopping_order = ShoppingOrder::create($data);
}
$this->putPayments('shopping_order_id', $shopping_order->id);
$this->makeOrderMargin($shopping_order);
$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, $shopping_user) {
foreach ($items as $item) {
@ -477,6 +484,38 @@ class CheckoutController extends Controller
return $shopping_order;
}
private function makeOrderMargin(ShoppingOrder $shopping_order)
{
if (Yard::instance('shopping')->getYardMargin()) {
$data = [
'shopping_order_id' => $shopping_order->id,
'user_id' => $shopping_order->auth_user_id,
'net_price' => Yard::instance('shopping')->getYardMargin()->net_price,
'net_discount' => Yard::instance('shopping')->getYardMargin()->net_discount,
'net_amount' => Yard::instance('shopping')->getYardMargin()->net_amount,
'from_payment_credit' => Yard::instance('shopping')->totalfromCredit(2, '.', ''),
'from' => now(),
'content' => serialize(Yard::instance('shopping')->getYardMargin()->toArray())
];
if(Yard::instance('shopping')->getYardMargin()->net_partner_commission > 0){
$data['m_sponsor_id'] = $shopping_order->auth_user->m_sponsor;
$data['net_partner_commission'] = Yard::instance('shopping')->getYardMargin()->net_partner_commission;
}
$shopping_order_margin = false;
if ($this->getPayments('shopping_order_margin_id')) {
$shopping_order_margin = ShoppingOrderMargin::find($this->getPayments('shopping_order_margin_id'));
if ($shopping_order_margin) {
$shopping_order_margin->fill($data);
$shopping_order_margin->save();}
}
if (!$shopping_order_margin) {
$shopping_order_margin = ShoppingOrderMargin::create($data);
}
$this->putPayments('shopping_order_margin_id', $shopping_order_margin->id);
}
}
private function putPayments($key, $value){
$content = $this->getContent();
$content->put($key, $value);