/** * Creates a new model. * If creation is successful, the browser will be redirected to the 'view' page. */ public function actionCreate($id) { $model = new Invoices(); $formInvoice = new InvoiceForm(); $customer = Customer::model()->findByPk($id); $criteria = new CDbCriteria(); $criteria->compare('customer_id', $id); $criteria->condition = 'invoice_id is null'; $cust_transaction = new CActiveDataProvider('Transaction', array('criteria' => $criteria)); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['InvoiceForm'])) { $formInvoice->attributes = $_POST['InvoiceForm']; $model->customer_id = $customer->id; try { if ($formInvoice->validate()) { if ($model->save()) { $db = Yii::app()->db; if ($formInvoice->method == 'all') { $trans = Yii::app()->db->beginTransaction(); $cmk = $db->createCommand('SELECT * FROM transaction WHERE customer_id = :customer_id and invoice_id is null for update'); $cmk->bindValue(':customer_id', $model->customer_id, PDO::PARAM_INT); Transaction::model()->updateAll(array('invoice_id' => $model->id), 'customer_id = :customer_id and invoice_id is null', array(':customer_id' => $customer->id)); $trans->commit(); } else { if ($formInvoice->method == 'not_all') { $trans = Yii::app()->db->beginTransaction(); $cmk = $db->createCommand('SELECT * FROM transaction WHERE customer_id = :customer_id and invoice_id is null and MONTH(FROM_UNIXTIME(created)) = :month for update'); $cmk->bindValue(':month', $formInvoice->trans_month, PDO::PARAM_INT); $cmk->bindValue(':customer_id', $model->customer_id, PDO::PARAM_INT); Transaction::model()->updateAll(array('invoice_id' => $model->id), 'customer_id = :customer_id and MONTH(FROM_UNIXTIME(created)) = :month and invoice_id is null', array(':customer_id' => $customer->id, ':month' => $formInvoice->trans_month)); $trans->commit(); } else { if ($formInvoice->method == 'custom') { $trans = Yii::app()->db->beginTransaction(); foreach ($formInvoice->trans_id as $key => $val) { $cmk = $db->createCommand('SELECT * FROM transaction WHERE customer_id = :customer_id and invoice_id is null and id = :trans_id for update'); $cmk->bindValue(':customer_id', $model->customer_id, PDO::PARAM_INT); $cmk->bindValue(':trans_id', $val, PDO::PARAM_INT); Transaction::model()->updateByPk($val, array('invoice_id' => $model->id), 'customer_id = :customer_id and invoice_id is null', array(':customer_id' => $customer->id)); } $trans->commit(); } } } $cmd = $db->createCommand('SELECT SUM(total) FROM transaction WHERE invoice_id = :invoice_id'); $cmd->bindValue(':invoice_id', $model->id, PDO::PARAM_INT); $model->total = $cmd->queryScalar(); $model->save(false); UserLogs::createLog('create new Invoice ' . $model->id, 'info', get_class($model)); $this->redirect(array('viewInvoice', 'id' => $customer->id)); } } } catch (CDbException $e) { $trans->rollback(); throw $e; } } $this->render('create', array('model' => $model, 'formInvoice' => $formInvoice, 'customer' => $customer, 'cust_transaction' => $cust_transaction)); }
/** * Creates a new model. * If creation is successful, the browser will be redirected to the 'view' page. */ public function actionCreate() { $model = new Invoices(); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_GET['byorder']) and is_numeric($_GET['byorder'])) { $model->order_id = (int) $_GET['byorder']; } if (isset($_POST['Invoices'])) { $model->attributes = $_POST['Invoices']; // $model->client_id = $model->order->client_id; if ($model->save()) { $msg = 'Счёт #' . $model->id . ' для Заказа #' . $model->order_id . ' ' . $model->order->name . ' создан'; Yii::app()->user->setFlash('success', $msg); Yii::app()->logger->write($msg); if (isset($model->order_id)) { $this->redirect(array('orders/view', 'id' => $model->order_id)); } else { $this->redirect(array('view', 'id' => $model->id)); } } } $model->date = date('Y-m-d'); $model->num = $model->getLastNum() + 1; $this->render('create', array('model' => $model)); // Yii::app()->user->setFlash('error', 'Счет следует создавать из заказа'); // $this->redirect('admin');//Yii::app()->request->urlReferrer); }
public function createInvoice() { try { $_invoice = new Invoices(); $_invoice->firstName = Session::get('checkout.address')[0]['firstName']; $_invoice->lastName = Session::get('checkout.address')[0]['lastName']; $_invoice->companyname = Session::get('checkout.address')[0]['companyname']; $_invoice->email = Session::get('checkout.address')[0]['email']; $_invoice->country = Session::get('checkout.address')[0]['country']; $_invoice->state = Session::get('checkout.address')[0]['state']; $_invoice->street = Session::get('checkout.address')[0]['street']; $_invoice->zipcode = Session::get('checkout.address')[0]['zipcode']; $_invoice->telephone = Session::get('checkout.address')[0]['telephone']; $_invoice->comment = Session::get('checkout.address')[0]['comment']; $_invoice->invoiceCreater = Session::get('checkout.payment')[0]['payment']; $_invoice->invoiceCreatedDate = date("Y-m-d"); $_itemsCount = Cart::instance('shopping')->count(); $_contentCart = Cart::instance('shopping')->content(); $_contentTotal = Cart::instance('shopping')->total() + Cart::instance('shopping')->total() * 10 / 100; $_calculateinvoice = $this->getinvoicenumber(); $_invoice->invoice = $_calculateinvoice; $_invoice->save(); foreach ($_contentCart as $row) { $_resultData = DB::table('qlm_printerdetails')->where('detailId', $row->id)->get(); $_invoicedetails = new InvoiceDetails(); $_invoicedetails->product = $row->name; $_invoicedetails->quantity = $row->qty; $_invoicedetails->unitprice = $row->price; $_invoicedetails->gst = $row->price * 10 / 100; $_invoicedetails->total = $row->price * $row->qty + $row->price * $row->qty * 10 / 100; $_invoicedetails->invoice = $_calculateinvoice; $_invoicedetails->save(); } } catch (Exception $_ex) { Log::info("\$\$\$ --- Error: " . $_ex . " --- \$\$\$"); } }
public function actionpayredirect() { if (!isset($_POST['id_bank'])) { Yii::app()->user->setFlash('error', Yii::t('translation', 'Please select a bank')); $this->redirect(Yii::app()->request->baseUrl . "/deposit/"); } if (isset($_POST['amount']) && ($_POST['amount'] <= 0 or $_POST['amount'] > 10000)) { Yii::app()->user->setFlash('error', Yii::t('translation', 'The amount cant be zero or more than 10000')); $this->redirect(Yii::app()->request->baseUrl . "/deposit/"); } if (isset($_POST['id_bank']) && isset($_POST['amount'])) { if ($_POST['amount'] <= 0 or $_POST['amount'] > 10000 or $_POST['id_bank'] == "") { Yii::app()->user->setFlash('error', Yii::t('translation', 'Invalid amount or bank')); $this->redirect(Yii::app()->request->baseUrl . "/deposit/"); } $user = Yii::app()->user->data(); $tran = new Transaction(); $tran->id_user = $user->id; $tran->status = 0; $tran->type = 1; $tran->amount = $_POST['amount']; $tran->currency = "MXN"; $tran->descr = "Deposito de pesos en tu cuenta usando astropay"; $tran->save(); $invo = new Invoices(); $invo->id_user = $user->id; $invo->invoice_number = dechex(time()); $invo->amount = $_POST['amount']; $invo->status = 0; $invo->id_bank = $_POST['id_bank']; $invo->name_bank = "Bank Test"; $invo->id_country = "MX"; $invo->id_currency = "MXN"; $invo->descr = "Deposit via Astropay"; $invo->id_cpf = ""; $invo->id_sub_code = ""; $invo->id_trans = $tran->id_trans; $invo->save(); $return_url = "http://mercadobtx.com/deposit/return"; $confirmation_url = "http://mercadobtx.com/deposit/confirm"; $apd = new AstroPayDirect(); $jdata = $apd->create($invo->invoice_number, $invo->amount, $user->id, $invo->id_bank, $invo->id_country, $invo->id_currency, $invo->descr, $invo->id_cpf, $invo->id_sub_code, $return_url, $confirmation_url, $response_type = 'json'); $dat = json_decode($jdata); if ($dat->{"status"} == "OK") { $this->redirect($dat->{"link"}); } else { Yii::app()->user->setFlash('error', Yii::t('translation', 'Returned error from Astropay') . " " . $dat->{"desc"}); $this->redirect(Yii::app()->request->baseUrl . "/deposit/"); } } $this->redirect(Yii::app()->request->baseUrl . "/deposit/"); }
/** * Create * Create an invoice starting from an order id * @param $orderid * @return Doctrine Record */ public static function Create($orderid) { if (is_numeric($orderid)) { $invoice_number = InvoicesSettings::getLastInvoice(); $customer_id = Doctrine::getTable('Orders')->find($orderid)->customer_id; // Check if there is an invoice ID set for this order. $Invoice = Doctrine::getTable('Invoices')->findOneByOrderId($orderid); if (isset($Invoice->invoice_id) && is_numeric($Invoice->invoice_id) && $Invoice->invoice_id > 0) { // Set the invoice number to the order Orders::setInvoice($orderid, $Invoice->invoice_id); return $Invoice->invoice_id; } try { if (is_numeric($customer_id)) { $Invoice = new Invoices(); $Invoice->number = $invoice_number; $Invoice->order_id = $orderid; $Invoice->customer_id = $customer_id; $Invoice->invoice_date = date('Y-m-d'); $Invoice->save(); $invoice_id = $Invoice->getIncremented(); Shineisp_Commons_Utilities::log("Created new invoice with id #" . $invoice_id, 'invoices.log'); InvoicesSettings::setLastInvoice($invoice_number); Orders::setInvoice($orderid, $invoice_id); // Generate an Invoice Number $invoice_number = self::generateNumber($invoice_id); if (isset($invoice_number)) { Shineisp_Commons_Utilities::log("Generated invoice number " . $invoice_number . " for invoice with id #" . $invoice_id, 'invoices.log'); $Invoice->formatted_number = $invoice_number; $Invoice->save(); } // Create the pdf invoice document (dropbox event is triggered by this) self::PrintPDF($invoice_id, false, true); if (intval(Settings::findbyParam('auto_send_invoice')) === 1 && $invoice_id > 0) { Invoices::sendInvoice($invoice_id); } return $invoice_id; } } catch (Exception $e) { return $e->getMessage(); } } }
/** * Creates a new model. * @return create view */ public function actionCreate() { // check if user has permissions to createInvoices if (Yii::app()->user->checkAccess('createInvoices')) { // create Invoices object model $model = new Invoices(); // find all budgets relateds to current project $Budgets = Budgets::model()->findBudgetsByProjects(Yii::app()->user->getState('project_selected')); // if Invoices form exist if (isset($_POST['Invoices'])) { // set form elements to Invoices model attributes $model->attributes = $_POST['Invoices']; $model->project_id = Yii::app()->user->getState('project_selected'); $model->status_id = Status::STATUS_PENDING; // validate and save if ($model->save()) { // save log $attributes = array('log_date' => date("Y-m-d G:i:s"), 'log_activity' => 'InvoiceCreated', 'log_resourceid' => $model->primaryKey, 'log_type' => Logs::LOG_CREATED, 'user_id' => Yii::app()->user->id, 'module_id' => Yii::app()->controller->id, 'project_id' => $model->project_id); Logs::model()->saveLog($attributes); $project = Projects::model()->findByPk(Yii::app()->user->getState('project_selected')); // send an email to projects managers only $recipientsList = array(); $ProjectManagers = Projects::model()->findManagersByProject($project->project_id); $managersArray = array(); foreach ($ProjectManagers as $manager) { $managersArray['email'] = $manager->user_email; $managersArray['name'] = $manager->CompleteName; array_push($recipientsList, $managersArray); } // prepare template to send via email $str = $this->renderPartial('//templates/invoices/activity', array('model' => $model, 'projectName' => $project->project_name, 'userposted' => Yii::app()->user->CompleteName, 'applicationName' => Yii::app()->name, 'applicationUrl' => Yii::app()->createAbsoluteUrl('invoices/view', array('id' => $model->primaryKey))), true); Yii::import('application.extensions.phpMailer.yiiPhpMailer'); $mailer = new yiiPhpMailer(); $subject = Yii::t('email', 'InvoiceCreated') . " - " . $project->project_name; $mailer->pushMail($subject, $str, $recipientsList, Emails::PRIORITY_NORMAL); // to prevent F5 keypress, redirect to create page $this->redirect(array('view', 'id' => $model->invoice_id)); } } $this->render('create', array('invoice' => $model, 'lastused' => Invoices::model()->getLastUsed(), 'budgets' => $Budgets)); } else { throw new CHttpException(403, Yii::t('site', '403_Error')); } }