'int', 'shopping_order_id' => 'int', 'shipping' => 'float', 'shipping_net' => 'float', 'shipping_tax' => 'float', 'price_total_net' => 'float', 'price_total' => 'float', 'tax_total' => 'float', 'qty_total' => 'int', 'points' => 'int', 'status' => 'int', 'tax_split' => 'array', 'orders' => AsArrayObject::class, 'shop_items' => AsArrayObject::class, ]; protected $fillable = [ 'user_id', 'shopping_order_id', //'identifier', 'shipping', 'shipping_net', 'shipping_tax', 'price_total_net', 'price_total', 'tax_total', 'qty_total', 'points', 'tax_split', 'orders', 'shop_items', 'status' ]; public static $statusTypes = [ 0 => '', 1 => 'store / pre', 2 => 'order', ]; public function shopping_order() { return $this->belongsTo(ShoppingOrder::class); } public function user() { return $this->belongsTo(User::class); } public function addTaxToSplit($tax_rate, $add_tax) { $tax_split = $this->tax_split; $tax_split[$tax_rate] = isset($tax_split[$tax_rate]) ? round($tax_split[$tax_rate] += $add_tax, 2) : $add_tax; $this->tax_split = $tax_split; } public function addShopItem($shop_item_id, $shop_item) { $this->shop_items[$shop_item_id] = $shop_item; } public function addOrder($order) { $this->orders[] = $order; } public function initShoppingOrder($order) { $order['shopping_order'] = ShoppingOrder::findOrFail($order['order_id']); return $order; } }