コード例 #1
0
ファイル: Product.php プロジェクト: syscover/market
 /**
  * Dynamically access route parameters.
  *
  * @param  string  $key
  * @return mixed
  */
 public function __get($key)
 {
     // total property
     if ($key === 'price' || $key === 'price_111') {
         if (config('market.taxProductDisplayPrices') == TaxRuleLibrary::PRICE_WITHOUT_TAX) {
             return $this->subtotal_111;
         } elseif (config('market.taxProductDisplayPrices') == TaxRuleLibrary::PRICE_WITH_TAX) {
             return $this->total_111;
         }
     }
     // total property
     if ($key === 'total' || $key === 'total_111') {
         if ($this->total !== null) {
             return $this->total;
         }
         if ($this->taxAmount !== null) {
             $this->total = $this->subtotal_111 + $this->taxAmount;
             return $this->total;
         }
         if ($this->taxRules === null) {
             $this->taxRules = TaxRule::builder()->where('country_id_103', config('market.taxCountry'))->where('customer_class_tax_id_106', config('market.taxCustomerClass'))->where('product_class_tax_id_107', $this->product_class_tax_id_111)->orderBy('priority_104', 'asc')->get();
         }
         $taxes = TaxRuleLibrary::taxCalculateOverSubtotal($this->subtotal_111, $this->taxRules->where('product_class_tax_id_107', $this->product_class_tax_id_111));
         $this->taxAmount = $taxes->sum('taxAmount');
         $this->total = $this->subtotal_111 + $this->taxAmount;
         return $this->total;
     }
     // taxAmount property
     if ($key === 'taxAmount' || $key === 'tax_amount' || $key === 'tax_amount_111') {
         if ($this->taxAmount !== null) {
             return $this->taxAmount;
         } else {
             if ($this->taxRules === null) {
                 $this->taxRules = TaxRule::builder()->where('country_id_103', config('market.taxCountry'))->where('customer_class_tax_id_106', config('market.taxCustomerClass'))->where('product_class_tax_id_107', $this->product_class_tax_id_111)->orderBy('priority_104', 'asc')->get();
             }
             $taxes = TaxRuleLibrary::taxCalculateOverSubtotal($this->subtotal_111, $this->taxRules->where('product_class_tax_id_107', $this->product_class_tax_id_111));
             $this->taxAmount = $taxes->sum('taxAmount');
             return $this->taxAmount;
         }
     }
     if ($key === 'taxRules' || $key === 'tax_rules' || $key === 'tax_rules_111') {
         return $this->taxRules;
     }
     // check if property is mapped
     if (isset($this->maps[$key])) {
         return $this->{$this->maps[$key]};
     }
     // call parent method in model
     return parent::getAttribute($key);
 }
コード例 #2
0
ファイル: TaxRuleController.php プロジェクト: syscover/market
 public function apiGetProductTaxes($price, $productClassTax)
 {
     $taxRules = TaxRule::builder()->where('country_id_103', config('market.taxCountry'))->where('customer_class_tax_id_106', config('market.taxCustomerClass'))->where('product_class_tax_id_107', $productClassTax)->orderBy('priority_104', 'asc')->get();
     if ((int) config('market.taxProductPrices') == TaxRuleLibrary::PRICE_WITHOUT_TAX) {
         $taxes = TaxRuleLibrary::taxCalculateOverSubtotal($price, $taxRules);
         $taxAmount = $taxes->sum('taxAmount');
         $subtotal = $price;
         $total = $subtotal + $taxAmount;
     } elseif ((int) config('market.taxProductPrices') == TaxRuleLibrary::PRICE_WITH_TAX) {
         $taxes = TaxRuleLibrary::taxCalculateOverTotal($price, $taxRules);
         $taxAmount = $taxes->sum('taxAmount');
         $total = $price;
         $subtotal = $total - $taxAmount;
     }
     $response = ['success' => true, 'taxes' => $taxes, 'subtotal' => $subtotal, 'taxAmount' => $taxAmount, 'total' => $total, 'subtotalFormat' => number_format($subtotal, 2, ',', '.'), 'taxAmountFormat' => number_format($taxAmount, 2, ',', '.'), 'totalFormat' => number_format($total, 2, ',', '.')];
     return response()->json($response);
 }
コード例 #3
0
ファイル: ProductController.php プロジェクト: syscover/market
 protected function getSubtotalOverTotal()
 {
     $subtotal = null;
     if ($this->request->has('price')) {
         if ($this->request->has('productClassTax')) {
             // get tax rurles from product
             $taxRules = TaxRule::builder()->where('country_id_103', config('market.taxCountry'))->where('customer_class_tax_id_106', config('market.taxCustomerClass'))->where('product_class_tax_id_107', $this->request->input('productClassTax'))->orderBy('priority_104', 'asc')->get();
             if ((int) config('market.taxProductPrices') == TaxRuleLibrary::PRICE_WITH_TAX) {
                 $taxes = TaxRuleLibrary::taxCalculateOverTotal((double) $this->request->input('price'), $taxRules);
                 $taxAmount = $taxes->sum('taxAmount');
             }
             $subtotal = (double) $this->request->input('price') - $taxAmount;
         } else {
             $subtotal = $this->request->input('price');
         }
     } else {
         // if has not price, get precisionSubtotal input
         // covert possible strign with comma and dots to float val
         $subtotal = Miscellaneous::tofloat($this->request->input('precisionSubtotal'));
     }
     return $subtotal;
 }