Esempio n. 1
0
 private function createPayment($invitation, $ref, $payerId = null)
 {
     $invoice = $invitation->invoice;
     $accountGateway = $invoice->client->account->account_gateways[0];
     if ($invoice->account->account_key == NINJA_ACCOUNT_KEY) {
         $account = Account::find($invoice->client->public_id);
         $account->pro_plan_paid = date_create()->format('Y-m-d');
         $account->save();
     }
     if ($invoice->is_quote) {
         $invoice = $this->invoiceRepo->cloneInvoice($invoice, $invoice->id);
     }
     $payment = Payment::createNew($invitation);
     $payment->invitation_id = $invitation->id;
     $payment->account_gateway_id = $accountGateway->id;
     $payment->invoice_id = $invoice->id;
     $payment->amount = $invoice->amount;
     $payment->client_id = $invoice->client_id;
     $payment->contact_id = $invitation->contact_id;
     $payment->transaction_reference = $ref;
     $payment->payment_date = date_create()->format('Y-m-d');
     if ($payerId) {
         $payment->payer_id = $payerId;
     }
     $payment->save();
     Event::fire('invoice.paid', $payment);
     return $payment;
 }
Esempio n. 2
0
 private function save()
 {
     $rules = array('client' => 'required', 'invoice' => 'required', 'amount' => 'required|positive');
     if (Input::get('invoice')) {
         $invoice = Invoice::scope(Input::get('invoice'))->firstOrFail();
         $rules['amount'] .= '|less_than:' . $invoice->balance;
     }
     if (Input::get('payment_type_id') == PAYMENT_TYPE_CREDIT) {
         $rules['payment_type_id'] = 'has_credit:' . Input::get('client') . ',' . Input::get('amount');
     }
     $messages = array('required' => 'El campo es Requerido', 'positive' => 'El Monto debe ser mayor a cero', 'less_than' => 'El Monto debe ser menor o igual a ' . $invoice->balance, 'has_credit' => 'El Cliente no tiene crédito suficiente');
     $validator = \Validator::make(Input::all(), $rules, $messages);
     if ($validator->fails()) {
         $url = 'pagos/create';
         return Redirect::to($url)->withErrors($validator)->withInput();
     } else {
         $payment = Payment::createNew();
         $paymentTypeId = Input::get('payment_type_id') ? Input::get('payment_type_id') : null;
         $clientId = Client::getPrivateId(Input::get('client'));
         $amount = floatval(Input::get('amount'));
         if ($paymentTypeId == PAYMENT_TYPE_CREDIT) {
             $credits = Credit::scope()->where('client_id', '=', $clientId)->where('balance', '>', 0)->orderBy('created_at')->get();
             $applied = 0;
             foreach ($credits as $credit) {
                 $applied += $credit->apply($amount);
                 if ($applied >= $amount) {
                     break;
                 }
             }
         }
         $payment->client_id = $clientId;
         $payment->invoice_id = Invoice::getPrivateId(Input::get('invoice'));
         $payment->payment_type_id = $paymentTypeId;
         $payment->payment_date = date("Y-m-d", strtotime(Input::get('payment_date')));
         $payment->amount = $amount;
         $payment->transaction_reference = trim(Input::get('transaction_reference'));
         $payment->save();
         Session::flash('message', 'Pago creado con éxito');
         return Redirect::to('clientes/' . Input::get('client'));
     }
 }
Esempio n. 3
0
 private function save($publicId = null)
 {
     $action = Input::get('action');
     $entityType = Input::get('entityType');
     if ($action == 'archive' || $action == 'delete' || $action == 'mark') {
         return InvoiceController::bulk($entityType);
     }
     $input = json_decode(Input::get('data'));
     //echo "this is the result";
     $invoice = $input->invoice;
     //print_r($invoice);exit();
     $branch = Branch::where('account_id', '=', Auth::user()->account_id)->where('id', Auth::user()->branch_id)->first();
     $today = new DateTime('now');
     $today = $today->format('Y-m-d');
     $datelimit = DateTime::createFromFormat('Y-m-d', $branch->deadline);
     $datelimit = $datelimit->format('Y-m-d');
     $first = explode("-", $datelimit);
     $second = explode("-", $today);
     $first_day = $first[2];
     $first_month = $first[1];
     $first_year = $first[0];
     $second_day = $second[2];
     $second_month = $second[1];
     $second_year = $second[0];
     $a = gregoriantojd($first_month, $first_day, $first_year);
     $b = gregoriantojd($second_month, $second_day, $second_year);
     $errorS = "Expiró la Fecha Límite de " . $branch->name;
     if ($a - $b < 0) {
         Session::flash('error', $errorS);
         return Redirect::to("{$entityType}s/create")->withInput();
     } else {
         $last_invoice = Invoice::where('account_id', '=', Auth::user()->account_id)->first();
         if ($last_invoice) {
             $yesterday = $last_invoice->invoice_date;
             $today = date("Y-m-d", strtotime($invoice->invoice_date));
             $errorD = "La fecha de la factura es incorrecta";
             $yesterday = new DateTime($yesterday);
             $today = new DateTime($today);
             if ($yesterday > $today) {
                 Session::flash('error', $errorD);
                 return Redirect::to("{$entityType}s/create")->withInput();
             }
         }
         if (false && ($errors = $this->invoiceRepo->getErrors($invoice))) {
             Session::flash('error', trans('texts.invoice_error'));
             return Redirect::to("{$entityType}s/create")->withInput()->withErrors($errors);
         } else {
             //$this->taxRateRepo->save($input->tax_rates);
             $clientData = (array) $invoice->client;
             $clientData['branch'] = $branch->id;
             $client = $this->saveClient($invoice->client->public_id, $clientData);
             $invoiceData = (array) $invoice;
             $invoiceData['branch_id'] = $branch->id;
             $invoiceData['client_id'] = $client->id;
             $invoiceData['client_nit'] = $client->nit;
             $invoiceData['client_name'] = $client->name;
             $invoiceData['action'] = $action;
             //$invoice = $this->invoiceRepo->save($publicId, $invoiceData, $entityType);
             $account = Auth::user()->account;
             $client->load('contacts');
             $sendInvoiceIds = [];
             foreach ($client->contacts as $contact) {
                 if ($contact->send_invoice || count($client->contacts) == 1) {
                     $sendInvoiceIds[] = $contact->id;
                 }
             }
             /*foreach ($client->contacts as $contact)
             			{
             				$invitation = Invitation::scope()->whereContactId($contact->id)->whereInvoiceId($invoice->id)->first();
             
             				if (in_array($contact->id, $sendInvoiceIds) && !$invitation)
             				{
             					$invitation = Invitation::createNew();
             					$invitation->invoice_id = $invoice->id;
             					$invitation->contact_id = $contact->id;
             					$invitation->invitation_key = str_random(RANDOM_KEY_LENGTH);
             					$invitation->save();
             				}
             				else if (!in_array($contact->id, $sendInvoiceIds) && $invitation)
             				{
             					$invitation->delete();
             				}
             			}*/
             $message = trans($publicId ? "texts.updated_{$entityType}" : "texts.created_{$entityType}");
             if ($input->invoice->client->public_id == '-1') {
                 $message = $message . ' ' . trans('texts.and_created_client');
                 $url = URL::to('clients/' . $client->public_id);
                 Utils::trackViewed($client->getDisplayName(), ENTITY_CLIENT, $url);
             }
             if ($action == 'email') {
                 $aux = 0;
                 foreach ($client->contacts as $contact) {
                     if ($contact->email) {
                         $aux = 1;
                     }
                 }
                 if ($aux == 0) {
                     $errorMessage = trans('El cliente no tiene Correo Electrónico.');
                     Session::flash('error', $errorMessage);
                 } else {
                     if (Auth::user()->confirmed && !Auth::user()->isDemo()) {
                         $message = trans("texts.emailed_{$entityType}");
                         $this->mailer->sendInvoice($invoice);
                         Session::flash('message', $message);
                     } else {
                         $errorMessage = trans(Auth::user()->registered ? 'texts.confirmation_required' : 'texts.registration_required');
                         Session::flash('error', $errorMessage);
                         Session::flash('message', $message);
                     }
                 }
             } else {
                 if ($action == 'savepay') {
                     $payment = Payment::createNew();
                     $payment->client_id = $client->id;
                     $payment->invoice_id = $invoice->id;
                     $payment->payment_type_id = 1;
                     $payment->payment_date = $invoice->invoice_date;
                     $payment->amount = $invoice->amount;
                     $payment->save();
                     $message = trans("texts.savepay_{$entityType}");
                     Session::flash('message', $message);
                 } else {
                     if ($action == 'savepaycredit') {
                         $payment = Payment::createNew();
                         $credits = Credit::scope()->where('client_id', '=', $client->id)->where('balance', '>', 0)->orderBy('created_at')->get();
                         $applied = 0;
                         foreach ($credits as $credit) {
                             $applied += $credit->apply($invoice->amount);
                             if ($applied >= $invoice->amount) {
                                 break;
                             }
                         }
                         $payment->client_id = $client->id;
                         $payment->invoice_id = $invoice->id;
                         $payment->payment_type_id = 2;
                         $payment->payment_date = $invoice->invoice_date;
                         $payment->amount = $invoice->amount;
                         $payment->save();
                         $message = trans("texts.savepay_{$entityType}");
                         Session::flash('message', $message);
                     } else {
                         Session::flash('message', $message);
                     }
                 }
             }
             //$url = "factura/" . $invoice->public_id . '/show';
             $url = "factura/1";
             return Redirect::to($url);
         }
     }
 }
Esempio n. 4
0
require_once "../../include/Configuration.php";
require_once "SlowTemplate.php";
require_once "WebUtility.php";
require_once "Database.php";
require_once "Payment.php";
$slow = new SlowTemplate('template/admin');
$slow->setTemplateFile('index.tpl');
session_start();
//////////////////////////////////////////////////////////////////////////////
// handle the submission
if ($_SERVER["REQUEST_METHOD"] == 'POST') {
    if (isset($_POST["ok"])) {
        $reciept = "BCXY" . rand(1000, 9999);
        // need to be more random
        $payment = Payment::createNew($reciept, Payment::TYPE_PAYMENT_RECIEVED);
        if (is_object($payment)) {
            $amount = numberInput($_POST["amount"]);
            $payment->setTime(dateInput($_POST["day"] . " " . $_POST["time"]));
            $payment->setPhonenumber($_POST["phone"]);
            $payment->setName($_POST["name"]);
            $payment->setAccount(rand(1000, 9999));
            $payment->setStatus(Payment::STATUS_COMPLETED);
            $payment->setAmount($amount);
            $payment->setPostBalance($amount);
            $payment->update();
            print "Payment created";
        }
    }
}
//////////////////////////////////////////////////////////////////////////////
Esempio n. 5
0
 public function guardarFacturaG()
 {
     /* David 
         	 Guardando  factura con el siguiente formato:
         	
     			{"invoice_items":[{"qty":"2","id":"2"}],"client_id":"1"}
     			//nuevo formato para la cascada XD
     			{"invoice_items":[{"qty":"2","id":"2","boni":"1","desc":"3"}],"client_id":"1"}
     
         	*/
     $input = Input::all();
     // $invoice_number = Auth::user()->account->getNextInvoiceNumber();
     $invoice_number = Auth::user()->branch->getNextInvoiceNumber();
     $client_id = $input['client_id'];
     $client = DB::table('clients')->select('id', 'nit', 'name', 'public_id', 'custom_value4')->where('id', $input['client_id'])->first();
     DB::table('clients')->where('id', $input['client_id'])->update(array('nit' => $input['nit'], 'name' => $input['name']));
     $user_id = Auth::user()->getAuthIdentifier();
     $user = DB::table('users')->select('account_id', 'branch_id', 'public_id')->where('id', $user_id)->first();
     $account = DB::table('accounts')->where('id', $user->account_id)->first();
     // //$account_id = $user->account_id;
     // // $account = DB::table('accounts')->select('num_auto','llave_dosi','fecha_limite')->where('id',$user->account_id)->first();
     // //$branch = DB::table('branches')->select('num_auto','llave_dosi','fecha_limite','address1','address2','country_id','industry_id')->where('id',$user['branch_id'])->first();
     // //$branch = DB::table('branches')->select('num_auto','llave_dosi','fecha_limite','address1','address2','country_id','industry_id')->where('id','=',$user->branch_id)->first();
     //   	// $branch = DB::table('branches')->select('number_autho','key_dosage','deadline','address1','address2','country_id','industry_id','law','activity_pri','activity_sec1','name')->where('id','=',$user->branch_id)->first();
     $branch = DB::table('branches')->where('id', '=', $user->branch_id)->first();
     $invoice_design = DB::table('invoice_designs')->select('id')->where('account_id', '=', $user->account_id)->first();
     // return Response::json($invoice_design);
     $items = $input['invoice_items'];
     // $linea ="";
     $amount = 0;
     $subtotal = 0;
     $fiscal = 0;
     $icetotal = 0;
     $bonidesc = 0;
     $productos = array();
     foreach ($items as $item) {
         # code...
         $product_id = $item['id'];
         $pr = DB::table('products')->where('products.id', "=", $product_id)->first();
         $pr->amount = $item['amount'];
         // $pr->xd ='hola';
         $amount = $amount + $pr->amount;
         $pr->qty = 1;
         $productos = $pr;
         // $pr = DB::table('products')->select('cost')->where('id',$product_id)->first();
         // $qty = (int) $item['qty'];
         // $cost = $pr->cost/$pr->units;
         // $st = ($cost * $qty);
         // $subtotal = $subtotal + $st;
         // $bd= ($item['boni']*$cost) + $item['desc'];
         // $bonidesc= $bonidesc +$bd;
         // $amount = $amount +$st-$bd;
         //   			// $fiscal = $fiscal +$amount;
     }
     //   	$fiscal = $amount -$bonidesc-$icetotal;
     $balance = 0;
     //   	/////////////////////////hasta qui esta bien al parecer hacer prueba de que fuciona el join de los productos XD
     $invoice_dateCC = date("Ymd");
     $invoice_date = date("Y-m-d");
     $invoice_date_limitCC = date("Y-m-d", strtotime($branch->deadline));
     require_once app_path() . '/includes/control_code.php';
     $cod_control = codigoControl($invoice_number, $client->nit, $invoice_dateCC, $amount, $branch->number_autho, $branch->key_dosage);
     //     $ice = DB::table('tax_rates')->select('rate')->where('name','=','ice')->first();
     //     //
     //     // creando invoice
     $invoice = Invoice::createNew();
     $invoice->invoice_number = $invoice_number;
     $invoice->client_id = $client_id;
     $invoice->user_id = $user_id;
     $invoice->account_id = $user->account_id;
     $invoice->branch_id = $user->branch_id;
     $invoice->amount = number_format((double) $amount, 2, '.', '');
     $invoice->subtotal = number_format((double) $amount, 2, '.', '');
     $invoice->invoice_design_id = $invoice_design->id;
     //------------- hasta aqui funciona despues sale error
     $invoice->law = $branch->law;
     $invoice->balance = $balance;
     $invoice->control_code = $cod_control;
     $invoice->start_date = $invoice_date;
     $invoice->invoice_date = $invoice_date;
     $invoice->activity_pri = $branch->activity_pri;
     $invoice->activity_sec1 = $branch->activity_sec1;
     //     // $invoice->invoice
     $invoice->end_date = $invoice_date_limitCC;
     //     //datos de la empresa atra vez de una consulta XD
     //     /*****************error generado al intentar guardar **/
     //   	 // $invoice->branch = $branch->name;
     $invoice->address1 = $branch->address1;
     $invoice->address2 = $branch->address2;
     $invoice->number_autho = $branch->number_autho;
     // $invoice->work_phone=$branch->postal_code;
     $invoice->city = $branch->city;
     $invoice->state = $branch->state;
     //     // $invoice->industry_id=$branch->industry_id;
     // $invoice->country_id= $branch->country_id;
     $invoice->key_dosage = $branch->key_dosage;
     $invoice->deadline = $branch->deadline;
     //     $invoice->custom_value1 =$icetotal;
     //     $invoice->ice = $ice->rate;
     //     //cliente
     //     $invoice->nit=$client->nit;
     //     $invoice->name =$client->name;
     //adicionales de la nueva plataforma
     $invoice->account_name = $account->name;
     $invoice->account_nit = $account->nit;
     $invoice->client_name = $input['name'];
     $invoice->client_nit = $input['nit'];
     $invoice->phone = $branch->postal_code;
     $invoice->save();
     //     $account = Auth::user()->account;
     // 	$ice = $invoice->amount-$invoice->fiscal;
     // 	$desc = $invoice->subtotal-$invoice->amount;
     // 	$amount = number_format($invoice->amount, 2, '.', '');
     // 	$fiscal = number_format($invoice->fiscal, 2, '.', '');
     // 	$icef = number_format($ice, 2, '.', '');
     // 	$descf = number_format($desc, 2, '.', '');
     // 	if($icef=="0.00"){
     // 		$icef = 0;
     // 	}
     // 	if($descf=="0.00"){
     // 		$descf = 0;
     // 	}
     require_once app_path() . '/includes/BarcodeQR.php';
     $icef = 0;
     $descf = 0;
     $qr = new BarcodeQR();
     $datosqr = $invoice->account_nit . '|' . $invoice->invoice_number . '|' . $invoice->number_autho . '|' . $invoice_date . '|' . $invoice->amount . '|' . $invoice->amount . '|' . $invoice->nit . '|' . $icef . '|0|0|' . $descf;
     $qr->text($datosqr);
     $qr->draw(150, 'qr/' . $account->account_key . '_' . $branch->name . '_' . $invoice->invoice_number . '.png');
     $input_file = 'qr/' . $account->account_key . '_' . $branch->name . '_' . $invoice->invoice_number . '.png';
     $output_file = 'qr/' . $account->account_key . '_' . $branch->name . '_' . $invoice->invoice_number . '.jpg';
     $inputqr = imagecreatefrompng($input_file);
     list($width, $height) = getimagesize($input_file);
     $output = imagecreatetruecolor($width, $height);
     $white = imagecolorallocate($output, 255, 255, 255);
     imagefilledrectangle($output, 0, 0, $width, $height, $white);
     imagecopy($output, $inputqr, 0, 0, 0, 0, $width, $height);
     imagejpeg($output, $output_file);
     $invoice->qr = HTML::image_data('qr/' . $account->account_key . '_' . $branch->name . '_' . $invoice->invoice_number . '.jpg');
     $invoice->save();
     DB::table('invoices')->where('id', $invoice->id)->update(array('branch_name' => $branch->name));
     //generando pago
     $payment = Payment::createNew();
     $payment->invoice_id = $invoice->id;
     $payment->account_id = $invoice->account_id;
     $payment->client_id = $invoice->client_id;
     $payment->user_id = $invoice->user_id;
     $payment->payment_type_id = 2;
     $payment->amount = $invoice->amount;
     $payment->payment_date = $invoice->date;
     $payment->save();
     // -------------
     //descontando credito
     $credito = DB::table('credits')->where('client_id', $client->id)->first();
     $monto = (int) ($credito->balance - $invoice->amount);
     DB::table('credits')->where('client_id', $client->id)->update(array('balance' => $monto));
     // return  Response::json($monto);
     // --------------------
     //error verificar
     // $invoice = DB::table('invoices')->select('id')->where('invoice_number',$invoice_number)->first();
     //guardadndo los invoice items
     foreach ($items as $item) {
         // $product = DB::table('products')->select('notes')->where('id',$product_id)->first();
         $product_id = $item['id'];
         $product = DB::table('products')->where('products.id', "=", $product_id)->first();
         // $pr = DB::table('products')->select('cost')->where('id',$product_id)->first();
         // $cost = $product->cost/$product->units;
         // $line_total= ((int)$item['qty'])*$cost;
         $invoiceItem = InvoiceItem::createNew();
         $invoiceItem->invoice_id = $invoice->id;
         $invoiceItem->product_id = $product_id;
         $invoiceItem->product_key = $product->product_key;
         $invoiceItem->notes = $product->notes;
         $invoiceItem->cost = $item['amount'];
         $invoiceItem->qty = 1;
         // $invoiceItem->line_total=$line_total;
         $invoiceItem->tax_rate = 0;
         $invoiceItem->save();
     }
     $invoiceItems = DB::table('invoice_items')->select('notes', 'cost', 'qty')->where('invoice_id', '=', $invoice->id)->get(array('notes', 'cost', 'qty'));
     $date = new DateTime($invoice->deadline);
     $dateEmision = new DateTime($invoice->invoice_date);
     $cuenta = array('name' => $account->name, 'nit' => $account->nit);
     // $ice = $invoice->amount-$invoice->fiscal;
     // $factura  = array('invoice_number' => $invoice->invoice_number,
     //   					'control_code'=>$invoice->control_code,
     //   					'invoice_date'=>$dateEmision->format('d-m-Y'),
     //   					'amount'=>number_format((float)$invoice->amount, 2, '.', ''),
     //   					'subtotal'=>number_format((float)$invoice->subtotal, 2, '.', ''),
     //   					'fiscal'=>number_format((float)$invoice->fiscal, 2, '.', ''),
     //   					'client'=>$client,
     //   					// 'id'=>$invoice->id,
     //   					'account'=>$account,
     //   					'law' => $invoice->law,
     //   					'invoice_items'=>$invoiceItems,
     //   					'address1'=>str_replace('+', '°', $invoice->address1),
     //   					// 'address2'=>str_replace('+', '°', $invoice->address2),
     //   					'address2'=>$invoice->address2,
     //   					'num_auto'=>$invoice->number_autho,
     //   					'fecha_limite'=>$date->format('d-m-Y'),
     //   					// 'fecha_emsion'=>,
     //   					'ice'=>number_format((float)$ice, 2, '.', '')
     //   					);
     $client->name = $input['name'];
     $client->nit = $input['nit'];
     // $client->public_id = $client->custom_value4;
     $factura = array('invoice_number' => $invoice->invoice_number, 'control_code' => $invoice->control_code, 'activity_pri' => $branch->activity_pri, 'invoice_date' => $dateEmision->format('d-m-Y'), 'amount' => number_format((double) $invoice->amount, 2, '.', ''), 'subtotal' => number_format((double) $invoice->subtotal, 2, '.', ''), 'fiscal' => number_format((double) $invoice->fiscal, 2, '.', ''), 'client' => $client, 'account' => $account, 'law' => $invoice->law, 'invoice_items' => $invoiceItems, 'address1' => str_replace('+', '°', $invoice->address1), 'address2' => $invoice->address2, 'num_auto' => $invoice->number_autho, 'fecha_limite' => $date->format('d-m-Y'));
     // $invoic = Invoice::scope($invoice_number)->withTrashed()->with('client.contacts', 'client.country', 'invoice_items')->firstOrFail();
     // $d  = Input::all();
     //en caso de problemas irracionales me refiero a que se jodio
     // $input = Input::all();
     // $client_id = $input['client_id'];
     // $client = DB::table('clients')->select('id','nit','name')->where('id',$input['client_id'])->first();
     $input = Input::all();
     $datos = array('hola ' => 'mundo', 'user' => $user, 'input' => $input, 'invoice number' => $invoice_number, 'client' => $client, 'user' => $user, 'branch' => $branch, 'account' => $account, 'invoice_design' => $invoice_design, 'productos' => $productos);
     // return Response::json($datos);
     return Response::json($factura);
 }
Esempio n. 6
0
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store()
 {
     //return 0;
     // return Response::json(Input::all());
     // $rules = array(
     //           'client' => 'required',
     //           'invoice' => 'required',
     //           'amount' => 'required'
     //       );
     //       if (Input::get('invoice')) {
     //           $invoice = Invoice::scope(Input::get('invoice'))->firstOrFail();
     //           $rules['amount'] .= '|less_than:' . $invoice->balance;
     //       }
     //       if (Input::get('payment_type_id') == PAYMENT_TYPE_CREDIT)
     //       {
     //           $rules['payment_type_id'] = 'has_credit:' . Input::get('client') . ',' . Input::get('amount');
     //       }
     //       $messages = array(
     //     'required' => 'El campo es Requerido',
     //     'positive' => 'El Monto debe ser mayor a cero',
     //     'less_than' => 'El Monto debe ser menor o igual a ' . $invoice->balance,
     //     'has_credit' => 'El Cliente no tiene crédito suficiente'
     // );
     //       $validator = \Validator::make(Input::all(), $rules, $messages);
     //       if ($validator->fails())
     //       {
     //           $url = 'pagos/create';
     //           return Redirect::to($url)
     //               ->withErrors($validator)
     //               ->withInput();
     //       }
     //       else
     //       {
     $payment = Payment::createNew();
     $paymentTypeId = Input::get('payment_type_id');
     $clientId = Input::get('client');
     $amount = floatval(Input::get('amount'));
     // if ($paymentTypeId == PAYMENT_TYPE_CREDIT)
     // {
     //     $credits = Credit::scope()->where('client_id', '=', $clientId)
     //                 ->where('balance', '>', 0)->orderBy('created_at')->get();
     //     $applied = 0;
     //     foreach ($credits as $credit)
     //     {
     //         $applied += $credit->apply($amount);
     //         if ($applied >= $amount)
     //         {
     //             break;
     //         }
     //     }
     // }
     //                $payment->client_id = $clientId;
     //	        $payment->invoice_id =Input::get('invoice');
     //	        $payment->payment_type_id = $paymentTypeId;
     //	       	$payment->user_id = Auth::user()->id;
     //	        $payment->payment_date =  date("Y-m-d",strtotime(Input::get('payment_date')));
     //	        $payment->amount = $amount;
     //	        $payment->transaction_reference = trim(Input::get('transaction_reference'));
     $payment->setClientId($clientId);
     $payment->setInvoiceId(Input::get('invoice'));
     $payment->setPaymentTypeId($paymentTypeId);
     $payment->setUserId(Auth::user()->id);
     $dateparser = explode("/", Input::get('payment_date'));
     $date = $dateparser[2] . '-' . $dateparser[1] . '-' . $dateparser[0];
     $payment->setPaymentDate($date);
     $payment->setAmount($amount);
     $payment->setTransactionReference(trim(Input::get('transaction_reference')));
     $error = $payment->guardar();
     if ($error) {
         Session::flash('error', $error);
         return Redirect::to('pagos/create');
     }
     $payment->save();
     $cliente = Client::find($payment->client_id);
     $cliente->balance = $cliente->balance - $payment->amount;
     $cliente->paid_to_date = $cliente->paid_to_date + $payment->amount;
     $cliente->save();
     $invoice = Invoice::find($payment->invoice_id);
     $invoice->balance = $invoice->balance - $payment->amount;
     $invoice->save();
     if ($paymentTypeId == PAYMENT_TYPE_CREDIT) {
         $credits = Credit::scope()->where('client_id', '=', $clientId)->where('balance', '>', 0)->orderBy('created_at')->get();
         $applied = 0;
         foreach ($credits as $credit) {
             $applied += $credit->apply($amount);
             if ($applied >= $amount) {
                 break;
             }
         }
     }
     $paymentName = PaymentType::where('id', '=', $paymentTypeId)->first();
     if ($invoice->balance == 0) {
         // $invoice->invoice_status_id = INVOICE_STATUS_PAID;
         Utils::addNote($invoice->id, '<b>' . $invoice->getClientName() . ': </b>Totalmente pagada;&nbsp;&nbsp; se pagó:<b>' . $payment->amount . '</b>Bs, con <b>' . $paymentName->name . '</b>', INVOICE_STATUS_PAID);
     } else {
         // $invoice->invoice_status_id = INVOICE_STATUS_PARTIAL;
         Utils::addNote($invoice->id, '<b>' . $invoice->getClientName() . ': </b>Parcialmente pagado;&nbsp;&nbsp; se pagó:<b>' . $payment->amount . '</b> Bs, con <b>' . $paymentName->name . '</b>', INVOICE_STATUS_PARTIAL);
     }
     Session::flash('message', 'Pago creado con éxito');
     $client = Client::where('id', '=', Input::get('client'))->first();
     return Redirect::to('clientes/' . $client->public_id);
     // }
 }
Esempio n. 7
0
 public static function import($row)
 {
     // NOT DONE
     $payment = Payment::createNew($row['RECIEPT'], $row['TYPE']);
     if (is_object($payment)) {
         $payment->setTransferDirection($row['TRANSFERDIRECTION']);
         $payment->setTime($row["TIME"]);
         $payment->setPhonenumber($row['PHONENUMBER']);
         $payment->setName($row['NAME']);
         $payment->setAccount($row['ACCOUNT']);
         $payment->setStatus($row['STATUS']);
         $payment->setAmount($row['AMOUNT']);
         $payment->setPostBalance($row['POST_BALANCE']);
         $payment->setNote($row['NOTE']);
         $payment->update();
     }
 }
Esempio n. 8
0
 public function fire()
 {
     $this->info(date('Y-m-d') . ' Running CreateRandomData...');
     $user = User::first();
     if (!$user) {
         $this->error("Error: please create user account by logging in");
         return;
     }
     $productNames = ['Arkansas', 'New York', 'Arizona', 'California', 'Colorado', 'Alabama', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'Alaska', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'];
     $clientNames = ['IBM', 'Nestle', 'Mitsubishi UFJ Financial', 'Vodafone', 'Eni', 'Procter & Gamble', 'Johnson & Johnson', 'American International Group', 'Banco Santander', 'BHP Billiton', 'Pfizer', 'Itaú Unibanco Holding', 'Ford Motor', 'BMW Group', 'Commonwealth Bank', 'EDF', 'Statoil', 'Google', 'Siemens', 'Novartis', 'Royal Bank of Canada', 'Sumitomo Mitsui Financial', 'Comcast', 'Sberbank', 'Goldman Sachs Group', 'Westpac Banking Group', 'Nippon Telegraph & Tel', 'Ping An Insurance Group', 'Banco Bradesco', 'Anheuser-Busch InBev', 'Bank of Communications', 'China Life Insurance', 'General Motors', 'Telefónica', 'MetLife', 'Honda Motor', 'Enel', 'BASF', 'Softbank', 'National Australia Bank', 'ANZ', 'ConocoPhillips', 'TD Bank Group', 'Intel', 'UBS', 'Hewlett-Packard', 'Coca-Cola', 'Cisco Systems', 'UnitedHealth Group', 'Boeing', 'Zurich Insurance Group', 'Hyundai Motor', 'Sanofi', 'Credit Agricole', 'United Technologies', 'Roche Holding', 'Munich Re', 'PepsiCo', 'Oracle', 'Bank of Nova Scotia'];
     foreach ($productNames as $i => $value) {
         $product = Product::createNew($user);
         $product->id = $i + 1;
         $product->product_key = $value;
         $product->save();
     }
     foreach ($clientNames as $i => $value) {
         $client = Client::createNew($user);
         $client->name = $value;
         $client->save();
         $contact = Contact::createNew($user);
         $contact->email = "*****@*****.**";
         $contact->is_primary = 1;
         $client->contacts()->save($contact);
         $numInvoices = rand(1, 25);
         if ($numInvoices == 4 || $numInvoices == 10 || $numInvoices == 25) {
             // leave these
         } else {
             if ($numInvoices % 3 == 0) {
                 $numInvoices = 1;
             } else {
                 if ($numInvoices > 10) {
                     $numInvoices = $numInvoices % 2;
                 }
             }
         }
         $paidUp = rand(0, 1) == 1;
         for ($j = 1; $j <= $numInvoices; $j++) {
             $price = rand(10, 1000);
             if ($price < 900) {
                 $price = rand(10, 150);
             }
             $invoice = Invoice::createNew($user);
             $invoice->invoice_number = $user->account->getNextInvoiceNumber();
             $invoice->amount = $invoice->balance = $price;
             $invoice->created_at = date('Y-m-d', strtotime(date("Y-m-d") . ' - ' . rand(1, 100) . ' days'));
             $client->invoices()->save($invoice);
             $productId = rand(0, 40);
             if ($productId > 20) {
                 $productId = $productId % 2 + rand(0, 2);
             }
             $invoiceItem = InvoiceItem::createNew($user);
             $invoiceItem->product_id = $productId + 1;
             $invoiceItem->product_key = $productNames[$invoiceItem->product_id];
             $invoiceItem->cost = $invoice->amount;
             $invoiceItem->qty = 1;
             $invoice->invoice_items()->save($invoiceItem);
             if ($paidUp || rand(0, 2) > 1) {
                 $payment = Payment::createNew($user);
                 $payment->invoice_id = $invoice->id;
                 $payment->amount = $invoice->amount;
                 $client->payments()->save($payment);
             }
         }
     }
 }