예제 #1
0
	<?php 
echo $form->errorSummary($model);
?>

	<div class="row">
		<?php 
echo $form->hiddenField($model, 'UserID', array('value' => Yii::app()->user->ID));
?>
	</div>
	
	<div class="row" style="width: 20%; float: left;">
		<?php 
echo $form->labelEx($model, 'SerieID');
?>
		<?php 
echo $form->dropDownList($model, 'SerieID', CHtml::listData(Serie::model()->findAll($criteria), 'ID', 'Serie'), array('style' => 'width: 100%;'));
?>
		<?php 
echo $form->error($model, 'SerieID');
?>
	</div>
	
	<?php 
// If it is a new record. We calculate the next invoice number
if ($model->isNewRecord) {
    $criteriaNextNumber = new CDbCriteria();
    $criteriaNextNumber->condition = 'UserID = :userid';
    $criteriaNextNumber->params = array(':userid' => Yii::app()->user->ID);
    $criteriaNextNumber->order = 'Number Desc';
    $model->Number = Invoice::model()->find($criteriaNextNumber)->ID + 1;
}
예제 #2
0
 /**
  *	Billing and Print
  */
 public function actionGeneratePrint()
 {
     $model = Book::model()->findByPK($_GET["id"]);
     // Change Book status
     $model->Type = 1;
     $model->save();
     $items = array();
     $startDate = strtotime($model->Start);
     $finishDate = strtotime($model->Finish);
     $roomID = $model->RoomID;
     $Pax = $model->Pax;
     // Create Invoice
     $modelInvoice = new Invoice();
     $modelInvoice->UserID = Yii::app()->user->ID;
     $modelInvoice->CustomerID = $model->CustomerID;
     $modelInvoice->Date = date("Y-m-d");
     $criteriaNextNumber = new CDbCriteria();
     $criteriaNextNumber->condition = 'UserID = :userid';
     $criteriaNextNumber->params = array(':userid' => Yii::app()->user->ID);
     $criteriaNextNumber->order = 'Number Desc';
     $modelInvoice->Number = Invoice::model()->find($criteriaNextNumber)->ID + 1;
     $modelInvoice->SerieID = Serie::model()->findByAttributes(array('Pred' => '1'))->ID;
     $modelInvoice->BookID = $model->ID;
     $modelInvoice->save();
     $days = round(($finishDate - $startDate) / 86400);
     $price = 0;
     // Calculate Room price
     if (Room::model()->findByPK($roomID)->Type == 0) {
         for ($i = 0; $i < $days; $i++) {
             $date = $startDate + $i * 86400;
             $season = Book::model()->getSeason(date("Y-m-d", $date));
             $modelCharge = new Charge();
             $modelCharge->UserID = Yii::app()->user->ID;
             $modelCharge->InvoiceID = $modelInvoice->ID;
             $modelCharge->IVA = User::model()->findByPK(Yii::app()->user->ID)->IVA;
             switch ($season) {
                 case 0:
                     $items[] = array($model->room->PriceLow, $model->room->Name . " (Temporada Baja).");
                     $price = $price + Room::model()->findByPK($roomID)->PriceLow;
                     $modelCharge->Text = $model->room->Name . " (Temporada Baja).";
                     $modelCharge->Price = Room::model()->findByPK($roomID)->PriceLow;
                     break;
                 case 1:
                     $items[] = array($model->room->PriceMed, $model->room->Name . " (Temporada Media).");
                     $price = $price + Room::model()->findByPK($roomID)->PriceMed;
                     $modelCharge->Text = $model->room->Name . " (Temporada Media).";
                     $modelCharge->Price = Room::model()->findByPK($roomID)->PriceMed;
                     break;
                 case 2:
                     $items[] = array($model->room->PriceBig, $model->room->Name . " (Temporada Alta).");
                     $price = $price + Room::model()->findByPK($roomID)->PriceBig;
                     $modelCharge->Text = $model->room->Name . " (Temporada Alta).";
                     $modelCharge->Price = Room::model()->findByPK($roomID)->PriceBig;
                     break;
             }
             $modelCharge->save();
         }
     } else {
         for ($i = 0; $i < $days; $i++) {
             $date = $startDate + $i * 86400;
             $season = Book::model()->getSeason(date("Y-m-d", $date));
             $modelCharge = new Charge();
             $modelCharge->UserID = Yii::app()->user->ID;
             $modelCharge->InvoiceID = $modelInvoice->ID;
             $modelCharge->IVA = User::model()->findByPK(Yii::app()->user->ID)->IVA;
             switch ($season) {
                 case 0:
                     $items[] = array(Room::model()->findByPK($roomID)->PriceLow * $Pax, $model->room->Name . " (" . $Pax . " personas Temporada Baja).");
                     $price = $price + Room::model()->findByPK($roomID)->PriceLow * $Pax;
                     $modelCharge->Text = $model->room->Name . " (" . $Pax . " personas Temporada Baja).";
                     $modelCharge->Price = Room::model()->findByPK($roomID)->PriceLow * $Pax;
                     break;
                 case 1:
                     $items[] = array(Room::model()->findByPK($roomID)->PriceMed * $Pax, $model->room->Name . " (" . $Pax . " personas Temporada Media).");
                     $price = $price + Room::model()->findByPK($roomID)->PriceMed * $Pax;
                     $modelCharge->Text = $model->room->Name . " (" . $Pax . " personas Temporada Media).";
                     $modelCharge->Price = Room::model()->findByPK($roomID)->PriceMed * $Pax;
                     break;
                 case 2:
                     $items[] = array(Room::model()->findByPK($roomID)->PriceBig * $Pax, $model->room->Name . " (" . $Pax . " personas Temporada Alta).");
                     $price = $price + Room::model()->findByPK($roomID)->PriceBig * $Pax;
                     $modelCharge->Text = $model->room->Name . " (" . $Pax . " personas Temporada Alta).";
                     $modelCharge->Price = Room::model()->findByPK($roomID)->PriceBig * $Pax;
                     break;
             }
             $modelCharge->save();
         }
     }
     // Add extras to price
     if ($model->ID > 0) {
         $criteria = new CDbCriteria();
         $criteria->condition = "UserID = :userid AND BookID = :bookid";
         $criteria->params = array(':userid' => Yii::app()->user->ID, ':bookid' => $model->ID);
         $modelExtra = Extra::model()->findAll($criteria);
         foreach ($modelExtra as $extra) {
             $modelCharge = new Charge();
             $modelCharge->UserID = Yii::app()->user->ID;
             $modelCharge->InvoiceID = $modelInvoice->ID;
             $modelCharge->IVA = User::model()->findByPK(Yii::app()->user->ID)->IVA;
             $items[] = array($extra->Value, $extra->Name . " (Suplemento)");
             $modelCharge->Text = $extra->Name . " (Suplemento)";
             $modelCharge->Price = $extra->Value;
             $price = $price + $extra->Value;
             $modelCharge->save();
         }
     }
     // Apply discount to price
     if ($model->ID > 0) {
         $modelDiscount = Discount::model()->findAll($criteria);
         foreach ($modelDiscount as $discount) {
             $modelCharge = new Charge();
             $modelCharge->UserID = Yii::app()->user->ID;
             $modelCharge->InvoiceID = $modelInvoice->ID;
             $modelCharge->IVA = User::model()->findByPK(Yii::app()->user->ID)->IVA;
             $items[] = array(-($discount->Value * $price) / 100, $discount->Name . " (Descuento)");
             $modelCharge->Text = $discount->Name . " (Descuento)";
             $modelCharge->Price = -($discount->Value * $price / 100);
             $price = $price + -($discount->Value * $price) / 100;
             $modelCharge->save();
         }
     }
     // Print invoice
     set_time_limit(600);
     # mPDF
     $pdf = Yii::app()->ePdf->mpdf('', 'A4', '', '', '', '', '', '', '', '', 'P');
     $pdf->writeHTMLfooter = false;
     $pdf->writeHTMLheader = false;
     $pdf->DeflMargin = 25;
     $pdf->DefrMargin = 25;
     $pdf->tMargin = 15;
     $pdf->bMargin = 15;
     $pdf->w = 297;
     //manually set width
     $pdf->h = 209.8;
     //manually set height
     $pdf->WriteHTML($this->renderPartial('printbill', array('model' => $model, 'items' => $items, 'price' => $price), true));
     # Outputs ready PDF
     $pdf->Output('Factura_' . date("d/m/Y") . '.pdf', 'D');
 }
예제 #3
0
 /**
  * Returns the data model based on the primary key given in the GET variable.
  * If the data model is not found, an HTTP exception will be raised.
  * @param integer the ID of the model to be loaded
  */
 public function loadModel($id)
 {
     $model = Serie::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
예제 #4
0
<?php

/* @var $this InvoiceController */
/* @var $model Invoice */
$this->breadcrumbs = array('Facturas' => array('admin'), 'Listado');
$this->menu = array(array('label' => 'Nueva Factura', 'url' => array('create')), array('label' => 'Nueva Serie', 'url' => array('serie/create')), array('label' => 'Listado de series', 'url' => array('serie/admin')));
?>

<h1 class="header">Listado de facturas</h1>

<?php 
$this->widget('zii.widgets.grid.CGridView', array('id' => 'invoice-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'afterAjaxUpdate' => "function(){\n\t\t\t\t\t\t\tjQuery('#date_Date').datepicker(jQuery.extend({showMonthAfterYear:false}, jQuery.datepicker.regional['es'], {'dateFormat':'yy-mm-dd'}));\n\t\t\t\t\t\t}", 'columns' => array(array('name' => 'SerieID', 'value' => '$data->serie->Serie', 'filter' => CHtml::listData(Serie::model()->findAll(), 'ID', 'Serie'), 'headerHtmlOptions' => array('style' => 'width:10%;text-align:left !important;'), 'htmlOptions' => array('style' => 'width:10%;text-align:left;')), array('name' => 'Number', 'filter' => CHtml::activeTextField($model, 'Number', array('placeholder' => 'Escribe el valor a buscar...')), 'headerHtmlOptions' => array('style' => 'width:15%;text-align:left !important;'), 'htmlOptions' => array('style' => 'width:15%;text-align:left;')), array('name' => 'CustomerID', 'value' => '$data->customer->FullName', 'filter' => CHtml::listData(Customer::model()->findAll(), 'ID', 'FullName'), 'headerHtmlOptions' => array('style' => 'width:50%;text-align:left !important;'), 'htmlOptions' => array('style' => 'width:50%;text-align:left;')), array('name' => 'Date', 'filter' => false, 'value' => 'date("d-m-Y", strtotime($data->Date))'), array('class' => 'CButtonColumn', 'template' => '{update} {delete}', 'buttons' => array('update' => array('label' => 'Editar', 'imageUrl' => Yii::app()->baseURL . '/images/edit.png'), 'delete' => array('label' => 'Borrar', 'imageUrl' => Yii::app()->baseURL . '/images/delete.png')), 'deleteConfirmation' => 'Si aceptas eliminaras este registro definitivamente.')), 'emptyText' => 'No hay registros. <a href="' . $this->createURL('create') . '">Picha</a> para crear uno.', 'summaryText' => 'Mostrando del {start} al {end} de {count} registro(s).'));