public static function apiDetachFromPayeePayment()
 {
     $decrementsAmounts = RoyaltyPayment::whereIn('id', array_values(Input::all()))->groupBy("payee_payment_id")->orderBy("payee_payment_id", "asc")->select(DB::raw('sum(amount_received) AS amount'), 'payee_payment_id')->get();
     foreach ($decrementsAmounts as $decrement) {
         $payeePayment = PayeePayment::find($decrement->payee_payment_id);
         $payeePayment->amount -= $decrement->amount;
         if ($payeePayment->amount == 0) {
             $payeePayment->delete();
         } else {
             $payeePayment->save();
         }
     }
     RoyaltyPayment::whereIn('id', array_values(Input::all()))->update(["payee_payment_id" => null]);
 }
 public function testMarkAsPaidWithMultipleAdvances2CompleteUnfixedAmount()
 {
     $this->resetEvents();
     $user = User::create(self::userArray());
     $advance1 = Advance::create(self::advanceArray());
     $advance2 = Advance::create(self::advanceArray());
     $advance3 = Advance::create(self::advanceArray());
     $paymentDate = date("Y-m-d", strtotime("+ 5 days"));
     $payeePayment = PayeePayment::create(self::payeePaymentArray());
     $royaltyPayment = self::royaltyPaymentsArray($payeePayment);
     $royaltyPayment["amount_received"] = 800;
     RoyaltyPayment::create($royaltyPayment);
     RoyaltyPayment::create($royaltyPayment);
     RoyaltyPayment::create($royaltyPayment);
     $payeePayment->markAsPaid($paymentDate);
     $this->assertTrue(count(AdvancePayment::all()) == 5);
     $this->assertTrue(count(AdvancePayment::where("advance_id", "=", $advance1->id)->get()) == 2);
     $this->assertTrue(count(AdvancePayment::where("advance_id", "=", $advance2->id)->get()) == 2);
     $this->assertTrue(count(AdvancePayment::where("advance_id", "=", $advance3->id)->get()) == 1);
     $advanceFound1 = Advance::find($advance1->id);
     $this->assertTrue($advanceFound1->status == "complete");
     $advanceFound2 = Advance::find($advance2->id);
     $this->assertTrue($advanceFound2->status == "complete");
     $advanceFound3 = Advance::find($advance3->id);
     $this->assertTrue($advanceFound3->status == "incomplete");
     $this->assertTrue($advanceFound3->amountLeftToPay() == 600);
     $this->assertTrue(AdvancePayment::find(1)->amount == 800);
     $this->assertTrue(AdvancePayment::find(2)->amount == 200);
     $this->assertTrue(AdvancePayment::find(3)->amount == 600);
     $this->assertTrue(AdvancePayment::find(4)->amount == 400);
     $this->assertTrue(AdvancePayment::find(5)->amount == 400);
     $payeePayment1 = PayeePayment::find($payeePayment->id);
     $this->assertTrue($payeePayment1->status == "paid");
     $this->resetEvents();
 }
示例#3
0
 public static function updateOrCreatePayeePayment($payeePayment)
 {
     $payeePayment = self::formatFromExcel($payeePayment);
     if (isset($payeePayment['payee_payment.id']) && is_int(intval($payeePayment['payee_payment.id']))) {
         $payment = PayeePayment::find($payeePayment['payee_payment.id']);
         $payment->update($payeePayment);
     } else {
         $payeePayment['company_id'] = Auth::user()["company_id"];
         $payment = PayeePayment::create($payeePayment);
     }
     if (isset($payeePayment['status']) && $payeePayment['status'] == 'paid') {
         $payment->distributePayeePaymentToAdvancePayments();
     }
 }