public function postSaveReceiveAll() { $transactionId = 0; $ruless = array('party_id' => 'required', 'branch_id' => 'required', 'account_category_id' => 'required', 'account_name_id' => 'required', 'payment_method' => 'required', 'amount' => 'required'); $validate = Validator::make(Input::all(), $ruless); if ($validate->fails()) { var_dump($validate); die; return Redirect::to('sales/index/')->withErrors($validate); } else { //$this->setReceiveSalePaymentAll(); //return Redirect::to('sales/index'); //$salesreturn = new SalesReturn(); //$this->setSalesReturnData($salesreturn); //automatically reduce sales payment starts $return_amount = Input::get('amount'); $remaining_amount = $return_amount; //var_dump($remaining_amount); $partyId = Input::get('party_id'); if ($remaining_amount > 0) { $invoiceId = PurchaseInvoice::where('party_id', '=', $partyId)->get(); foreach ($invoiceId as $invid) { $detailsPrice = 0; $paid = 0; $saleDetails = PurchaseInvoiceDetail::where('detail_invoice_id', '=', $invid->invoice_id)->get(); $transactions = Transaction::where('invoice_id', '=', $invid->invoice_id)->where('payment_method', '=', 'Check')->where('type', '=', 'Payment')->where('cheque_status', '=', 1)->get(); foreach ($saleDetails as $saleDetail) { $detailsPrice = $detailsPrice + $saleDetail->price * $saleDetail->quantity; } foreach ($transactions as $transaction) { $paid = $paid + $transaction->amount; } $transactions2 = Transaction::where('invoice_id', '=', $invid->invoice_id)->where('type', '=', 'Payment')->where('payment_method', '!=', 'Check')->get(); foreach ($transactions2 as $transaction) { $paid = $paid + $transaction->amount; } $difference = $detailsPrice - $paid; //echo $difference; die(); if ($difference > 0) { //echo 'greater than 0 difference'; if ($remaining_amount <= $difference) { if ($remaining_amount > 0) { $sale = PurchaseInvoice::find($invid->id); if ($remaining_amount < $difference) { $sale->status = "Partial"; } elseif ($remaining_amount == $difference) { $sale->status = "Completed"; } $transaction = new Transaction(); $transaction->invoice_id = $invid->invoice_id; $transaction->amount = $remaining_amount; $transaction->type = 'Payment'; $transaction->payment_method = Input::get('payment_method'); $transaction->account_category_id = Input::get('account_category_id'); $transaction->remarks = Input::get('remarks'); $transaction->account_name_id = Input::get('account_name_id'); $transaction->user_id = Session::get('user_id'); $transaction->cheque_no = Input::get('cheque_no'); $branch = PurchaseInvoiceDetail::where('detail_invoice_id', '=', $invid->invoice_id)->first(); $transaction->branch_id = $branch->branch_id; $transaction->cheque_date = Input::get('cheque_date'); $transaction->cheque_bank = Input::get('cheque_bank'); if ($transaction->payment_method != "Check") { $accountPayment = NameOfAccount::find(Input::get('account_name_id')); $accountPayment->opening_balance = $accountPayment->opening_balance - $remaining_amount; $accountPayment->save(); } $transaction->save(); $transactionId = $transaction->id; $remaining_amount = 0; } } elseif ($remaining_amount > $difference) { if ($remaining_amount > 0) { $sale = PurchaseInvoice::find($invid->id); $sale->status = "Completed"; $toBePaid = $remaining_amount - $difference; $transaction = new Transaction(); $transaction->invoice_id = $invid->invoice_id; $transaction->amount = $difference; $transaction->type = 'Payment'; $transaction->payment_method = Input::get('payment_method'); $transaction->account_category_id = Input::get('account_category_id'); $transaction->remarks = Input::get('remarks'); $transaction->account_name_id = Input::get('account_name_id'); $transaction->user_id = Session::get('user_id'); $transaction->cheque_no = Input::get('cheque_no'); $branch = PurchaseInvoiceDetail::where('detail_invoice_id', '=', $invid->invoice_id)->first(); $transaction->branch_id = $branch->branch_id; $transaction->cheque_date = Input::get('cheque_date'); $transaction->cheque_bank = Input::get('cheque_bank'); if ($transaction->payment_method != "Check") { $accountPayment = NameOfAccount::find(Input::get('account_name_id')); $accountPayment->opening_balance = $accountPayment->opening_balance - $difference; $accountPayment->save(); } $transaction->save(); $transactionId = $transaction->id; $remaining_amount = $toBePaid; } } $sale->save(); } } } /*if($remaining_amount>0) { echo "How come its possible! Consult with DEVELOPERS!!!"; }*/ //automatically reduce sales payment ends return Redirect::to('purchases/voucher/' . $transactionId); } }
private function setPurchasePayment() { $accountPayment = NameOfAccount::find(Input::get('account_name_id')); if ($accountPayment->opening_balance >= Input::get('amount')) { $purchases[0] = PurchaseInvoice::where('invoice_id', '=', Input::get('invoice_id'))->get(); $purchaseTransaction = new Transaction(); $purchaseTransaction->account_category_id = Input::get('account_category_id'); $purchaseTransaction->account_name_id = Input::get('account_name_id'); $purchaseTransaction->amount = Input::get('amount'); $purchaseTransaction->remarks = Input::get('remarks'); $purchaseTransaction->user_id = Session::get('user_id'); $purchaseTransaction->type = "Payment"; $purchaseTransaction->payment_method = Input::get('payment_method'); $purchaseTransaction->invoice_id = Input::get('invoice_id'); $purchaseTransaction->cheque_no = Input::get('cheque_no'); $totalAmount = 0; $totalPrice = 0; $purchaseDetails = PurchaseInvoiceDetail::where('detail_invoice_id', '=', $purchaseTransaction->invoice_id)->get(); $transactions = Transaction::where('invoice_id', '=', $purchaseTransaction->invoice_id)->get(); foreach ($purchaseDetails as $purchaseDetail) { $totalPrice = $totalPrice + $purchaseDetail->price * $purchaseDetail->quantity; } foreach ($transactions as $transaction) { $totalAmount = $totalAmount + $transaction->amount; } $purchaseInvoice = PurchaseInvoice::find($purchases[0][0]['id']); if ($totalAmount == $totalPrice) { $purchaseInvoice->status = "Completed"; } else { $purchaseInvoice->status = "Partial"; } $purchaseInvoice->save(); $purchaseTransaction->save(); $accountPayment->opening_balance = $accountPayment->opening_balance - Input::get('amount'); $accountPayment->save(); Session::flash('message', 'Payment has been Successfully Cleared.'); } else { Session::flash('message', 'You dont have Enough Balance'); } }