/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Estimate::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['estimate.id' => $this->id, 'estimate.client_id' => $this->client_id, 'estimate.user_id' => $this->user_id, 'estimate.status' => $this->status, 'estimate.request_date' => $this->request_date, 'estimate.sent_date' => $this->sent_date, 'estimate.total' => $this->total, 'estimate.cost' => $this->cost, 'estimate.total_checked' => $this->total_checked, 'estimate.cost_checked' => $this->cost_checked, 'estimate.us' => $this->us, 'estimate.deleted' => $this->deleted]); $query->andFilterWhere(['like', 'title', $this->title]); $joinWith = ['client' => function ($query) { if ($this->clientName) { $query->where(['like', 'name', $this->clientName]); } }]; if ($this->sampleDelivered) { array_push($joinWith, 'entriesWithSampleDelivered'); } $query->joinWith($joinWith)->active(); return $dataProvider; }
?> <div class="estimate-index"> <h1><?php echo Html::encode($this->title); ?> </h1> <div style="float: right"> <h3>Valor dólar: <?php echo Currency::format(Currency::getUsToArs(), Currency::CURRENCY_ARS); ?> </h3> </div> <p> <?php echo Html::a('Crear presupuesto', ['create'], ['class' => 'btn btn-success']); ?> </p> <?php echo GridView::widget(['pjax' => true, 'pjaxSettings' => ['options' => ['id' => 'estimates-gridview']], 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'rowOptions' => function ($model, $index, $widget, $grid) { return ['style' => "background-color:{$model->statusColor};"]; }, 'columns' => [['attribute' => 'id', 'label' => 'Número', 'options' => ['style' => 'width: 100px;']], ['label' => 'Cliente', 'value' => 'client.name', 'filter' => Html::activeTextInput($searchModel, 'clientName', ['class' => 'form-control'])], 'title', ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'status', 'label' => 'Estado', 'value' => 'statusLabel', 'filter' => Html::activeDropDownList($searchModel, 'status', Estimate::statusLabels(), ['class' => 'form-control', 'prompt' => 'Estado']), 'editableOptions' => ['inputType' => Editable::INPUT_DROPDOWN_LIST, 'data' => Estimate::statusLabels()], 'refreshGrid' => true, 'options' => ['style' => 'width: 160px;']], ['attribute' => 'request_date', 'format' => 'date', 'filter' => false, 'options' => ['style' => 'width: 125px;']], ['attribute' => 'sent_date', 'format' => 'date', 'filter' => false, 'options' => ['style' => 'width: 125px;']], ['label' => 'Muestra', 'filter' => Html::activeCheckbox($searchModel, 'sampleDelivered', ['label' => '']), 'value' => function ($model, $key, $index, $column) { return $model->entriesWithSampleDeliveredCount > 0 ? 'Si' : 'No'; }, 'options' => ['style' => 'width: 70px;']], ['class' => 'yii\\grid\\ActionColumn', 'options' => ['style' => 'width: 60px;']]]]); ?> </div>
?> </div> <?php } ?> <?php echo $form->field($model, 'client_contact_id')->widget(DepDrop::classname(), ['data' => $model->client ? Client::getDefaultContactsArray() + $model->client->getContactsArray() : Client::getDefaultContactsArray(), 'pluginOptions' => ['placeholder' => Client::CONTACT_DROPDOWN_PLACEHOLDER, 'depends' => ['client_id'], 'url' => Url::to(['/client/get-contacts'])]]); ?> <?php echo $form->field($model, 'title')->textInput(); ?> <?php echo $form->field($model, 'status')->dropDownList(Estimate::statusLabels()); ?> <?php echo $form->field($model, 'request_date')->widget(\yii\jui\DatePicker::classname(), ['options' => ['class' => 'form-control']]); ?> <?php echo $form->field($model, 'sent_date')->widget(\yii\jui\DatePicker::classname(), ['options' => ['class' => 'form-control']]); ?> <div class="form-group"> <?php echo Html::submitButton($model->isNewRecord ? 'Crear' : 'Editar', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']); ?> </div>
/** * Add a contact to an existing Client. * @param integer $id * @return mixed */ public function actionAddContact($id) { $client = $this->findModel($id); $model = new ClientContact(); $model->client_id = $client->id; if ($model->load(Yii::$app->request->post()) && $model->save()) { $estimate = Yii::$app->session->get(Estimate::className()); if ($estimate) { return $this->redirect(['estimate/create']); } return $this->redirect(['view', 'id' => $client->id]); } else { return $this->render('add-contact', ['model' => $model, 'client' => $client]); } }
/** * Finds the Estimate model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Estimate the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Estimate::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * @return \yii\db\ActiveQuery */ public function getEstimate() { return $this->hasOne(Estimate::className(), ['id' => 'estimate_id']); }