/**
  * 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));
 }
Beispiel #2
0
 /**
  * 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);
 }
Beispiel #3
0
 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/");
 }
Beispiel #5
0
 /**
  * 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'));
     }
 }