예제 #1
0
파일: Bills.php 프로젝트: bitller/nova
 /**
  * Query database for products of a given bill.
  *
  * @param int $billId
  * @return mixed
  */
 public function getBill($billId)
 {
     // Make sure bill exists and belongs to current logged in user
     if (!Bill::where('user_id', Auth::user()->id)->where('id', $billId)->count()) {
         $response = new AjaxResponse();
         $response->setFailMessage(trans('bills.bill_not_found'));
         return response($response->get(), 404)->header('Content-Type', 'application/json');
     }
     $dataForProductsQuery = ['productIds' => $this->getProductIds($billId), 'applicationProductIds' => $this->getApplicationProductIds($billId), 'billId' => $billId];
     //
     $bill = Auth::user()->bills()->where('bills.id', $billId)->leftJoin('clients', 'clients.id', '=', 'bills.client_id')->leftJoin('campaigns', 'campaigns.id', '=', 'bills.campaign_id')->select('clients.id as client_id', 'clients.name as client_name', 'bills.campaign_order', 'campaigns.number as campaign_number', 'campaigns.year as campaign_year', 'bills.other_details', 'bills.payment_term', 'bills.paid')->first();
     $bill->payment_term = BillData::getPaymentTerm($billId);
     $bill->payment_term_passed = BillData::paymentTermPassed($billId);
     $billCalculations = BillData::getBillPriceFinalPriceToPaySavedMoneyAndNumberOfProducts($billId);
     // Check if discount column should be displayed
     $showDiscount = false;
     if ($billCalculations['saved_money'] > 0) {
         $showDiscount = true;
     }
     $notAvailableProducts = self::_getBillProducts($dataForProductsQuery, false);
     if (!$notAvailableProducts) {
         $notAvailableProducts = false;
     }
     $products = self::_getBillProducts($dataForProductsQuery, true);
     if (!$products) {
         $products = false;
     }
     return ['to_pay' => $billCalculations['final_price'], 'saved_money' => $billCalculations['saved_money'], 'total' => $billCalculations['price'], 'number_of_products' => $billCalculations['number_of_products'], 'show_discount_column' => $showDiscount, 'show_other_details_info' => true, 'products' => $products, 'not_available_products' => $notAvailableProducts, 'data' => $bill];
 }
예제 #2
0
 /**
  * Make sure getBillPriceFinalPriceToPaySavedMoneyAndNumberOfProducts method works.
  */
 public function test_it_return_valid_bill_price_final_price_saved_money_to_pay_and_number_of_products()
 {
     $customProduct = factory(\App\Product::class)->create(['user_id' => $this->user->id]);
     $applicationProduct = factory(\App\ApplicationProduct::class)->create();
     factory(\App\BillProduct::class)->create(['bill_id' => $this->bill->id, 'product_id' => $customProduct->id]);
     factory(\App\BillApplicationProduct::class)->create(['bill_id' => $this->bill->id, 'product_id' => $applicationProduct->id]);
     $billData = BillData::getBillPriceFinalPriceToPaySavedMoneyAndNumberOfProducts($this->bill->id);
     $this->assertEquals(BillData::getBillPrice($this->bill->id), $billData['price']);
     $this->assertEquals(BillData::getNumberOfProducts($this->bill->id), $billData['number_of_products']);
     $this->assertEquals(BillData::getBillToPay($this->bill->id), $billData['final_price']);
     $this->assertEquals(BillData::getBillSavedMoney($this->bill->id), $billData['saved_money']);
 }