add contract controller(s) changes

This commit is contained in:
Roland Schneider 2018-09-10 07:40:50 +02:00
parent dd0d6c50c9
commit 792d0caab5
7 changed files with 266 additions and 74 deletions

View File

@ -60,11 +60,13 @@ class ContractController extends Controller {
'dataProvider' => $dataProvider
] );
}
/**
* Lists all Contract models.
*
* @return mixed
*/
/**
* Lists all Contract models.
*
* @return mixed
* @throws NotFoundHttpException
*/
public function actionIndexCustomer($id) {
$model = Customer::findOne ( $id );
@ -83,12 +85,13 @@ class ContractController extends Controller {
] );
}
/**
* Displays a single Contract model.
*
* @param integer $id
* @return mixed
*/
/**
* Displays a single Contract model.
*
* @param integer $id
* @return mixed
* @throws NotFoundHttpException
*/
public function actionView($id) {
return $this->render ( 'view', [
'model' => $this->findModel ( $id )
@ -116,13 +119,14 @@ class ContractController extends Controller {
}
}
/**
* Updates an existing Contract model.
* If update is successful, the browser will be redirected to the 'view' page.
*
* @param integer $id
* @return mixed
*/
/**
* Updates an existing Contract model.
* If update is successful, the browser will be redirected to the 'view' page.
*
* @param integer $id
* @return mixed
* @throws NotFoundHttpException
*/
public function actionUpdate($id) {
$model = $this->findModel ( $id );
@ -217,7 +221,13 @@ class ContractController extends Controller {
'index'
] );
}
public function actionDetails($id) {
/**
* @param $id
* @return string
* @throws NotFoundHttpException
*/
public function actionDetails($id) {
$contract = Contract::findOne ( $id );
// ticket_installment_request

View File

@ -2,6 +2,7 @@
namespace backend\models;
use common\components\Helper;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
@ -15,6 +16,7 @@ class ContractSearch extends Contract
{
public $customer_name;
public $card_number;
/**
* @inheritdoc
@ -23,7 +25,7 @@ class ContractSearch extends Contract
{
return [
[['id_contract', 'id_customer', 'status', 'flag', 'part_paid', 'part_count', 'part_required', 'id_ticket_type'], 'integer'],
[['customer_name' ], 'safe'],
[['customer_name' ,'card_number'], 'safe'],
];
}
@ -65,6 +67,7 @@ class ContractSearch extends Contract
$query->from('contract');
$query->innerJoin('user' ,'user.id = contract.id_user');
$query->innerJoin('customer' ,'customer.id_customer = contract.id_customer');
$query->leftJoin('card as card' ,'card.id_card = customer.id_customer_card');
$dataProvider = new ActiveDataProvider([
@ -133,6 +136,9 @@ class ContractSearch extends Contract
// $query->where('0=1');
return $dataProvider;
}
if ( isset($this->card_number)){
$this->card_number = Helper::fixAsciiChars($this->card_number);
}
$query->andFilterWhere([
'contract.id_contract' => $this->id_contract,
@ -147,6 +153,7 @@ class ContractSearch extends Contract
'contract.created_at' => $this->created_at,
'contract.updated_at' => $this->updated_at,
'contract.id_ticket_type' => $this->id_ticket_type,
'card.number' => $this->card_number,
]);
$query->andFilterWhere(['like', 'customer.name', $this->customer_name]);

View File

@ -26,6 +26,7 @@ use yii\widgets\ActiveForm;
<?= $form->field($model, 'customer_name')->label('Vendég neve') ?>
</div>
<div class="col-md-3">
<?= $form->field($model, 'card_number')->label('Kártyaszám') ?>
</div>
</div>

View File

@ -35,6 +35,7 @@ use common\components\Helper;
* @property string $original_end;
*
* @property \common\models\Card card
* @property \common\models\Ticket transfer
*/
class Ticket extends \common\models\BaseFitnessActiveRecord
{

View File

@ -135,14 +135,6 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
$started_at = $contract->started_at;
$date = \DateTime::createFromFormat("Y-m-d H:i:s", $started_at, new \DateTimeZone( 'UTC'));
$date = DateUtil::addMonth( $date,$this->priority + 1 );
// $date = \DateTime::createFromFormat("Y-m-d H:i:s", $this->request_target_time_at, new \DateTimeZone( 'UTC'));
// $date = DateUtil::addMonth( $date, 1 );
// $date->modify("+1 month");
// $date->modify("-1 day");
// $date = \DateTime::createFromFormat("Y-m-d H:i:s", $this->request_target_time_at, new \DateTimeZone( 'UTC'));
// $date->modify("+1 month");
// $date->modify("-1 day");
$date->setTime(0, 0, 0);
@ -201,7 +193,6 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
if ( $status == static::$STATUS_ACCEPTED || $status == static::$STATUS_ACCEPTED_MANUAL){
if ( !$this->isStatusAccepted() ){
$contract->part_paid = $contract->part_paid +1;
// $tranfer = $this->addTransfer();
$result = Transfer::sellContractTicket($contract, $this, Account::findOne(1), Transfer::STATUS_PAID, Transfer::PAYMENT_METHOD_TRANSFER);
$transfer = $result[0];
$ticket = $result[1];
@ -236,15 +227,6 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
}
}
// protected function applyNewTicketState($partRequired = false){
// if ( $partRequired ){
// $this->ticket->setPartRequired($this);
// }
// $this->ticket->applyTicketInstallmentRequest($this);
// $this->ticket->save(false);
// }
/**
* @return Transfer
*/
@ -341,6 +323,10 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
];
}
/**
* @param $id_status
* @return mixed|string
*/
public static function toStatusName($id_status){
$result = "Ismeretlen";
$statuses = TicketInstallmentRequest::statuses();
@ -350,6 +336,9 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
return $result;
}
/**
* @return mixed|string
*/
public function getStatusName(){
return static::toStatusName($this->status);
}

View File

@ -0,0 +1,164 @@
<?php
namespace console\controllers;
use common\models\Card;
use common\models\Contract;
use common\models\Customer;
use common\models\ShoppingCart;
use common\models\Ticket;
use common\models\TicketInstallmentRequest;
use common\models\Transfer;
use yii\console\Controller;
use yii\console\Exception;
class ContractController extends Controller
{
/**
* @param $cardNumber
* @throws Exception
* @throws \yii\db\Exception
*/
public function actionRestoreCanceled($cardNumber)
{
$card = Card::findOne(['number' => $cardNumber]);
if (!isset($card)) {
throw new Exception("Card not found: " . $cardNumber);
}
$this->info("Card loaded");
$this->info($card->id_card);
$this->info($card->number);
$customer = Customer::findOne(['id_customer_card' => $card->id_card]);
if (!isset($customer)) {
throw new Exception("Customer not found for card: " . $cardNumber);
}
$this->info("Customer loaded");
$this->info($customer->id_customer);
$this->info($customer->name);
// find latest contract for customer
/** @var \common\models\Contract $contract */
$contract = Contract::find()
->andWhere(['id_customer' => $customer->id_customer])
->orderBy(['created_at' => SORT_DESC])
->limit(1)
->one();
if (!isset($contract)) {
throw new Exception("Contract not found for customer: " . $customer->id_customer);
}
$this->info("Contract loaded");
$this->info($contract->id_contract);
$this->info(Contract::toFlangName($contract->flag));
$parts = TicketInstallmentRequest::findAll(['id_contract' => $contract->id_contract]);
$this->info("Parts loaded");
$tx = \Yii::$app->db->beginTransaction();
try {
if (!$contract->isFlagActive()) {
$contract->flag = Contract::$FLAG_ACTIVE;
$I_CONTRACT = "Contract - change flag " . Contract::toStatusName($contract->flag) . "=>" .
Contract::toStatusName(Contract::$FLAG_ACTIVE);
$contract->save(false);
$this->info($I_CONTRACT);
}
foreach ($parts as $part) {
$this->info("Part #" . $part->priority);
if ($part->status == TicketInstallmentRequest::$STATUS_CANCELED) {
$part->status = TicketInstallmentRequest::$STATUS_PENDING;
$part->request_processed_at = null;
$part->save(false);
$this->info( "Change status: "
. TicketInstallmentRequest::toStatusName(TicketInstallmentRequest::$STATUS_CANCELED)
. "->"
. TicketInstallmentRequest::toStatusName(TicketInstallmentRequest::$STATUS_PENDING)
);
} else if ($part->isStatusAccepted()) {
/** @var \common\models\Ticket $ticket */
$ticket = $part->ticket;
if ($ticket->status == Ticket::STATUS_DELETED) {
$ticket->status = Ticket::STATUS_ACTIVE;
$ticket->save(false);
$this->info( "Ticket restored: ");
$this->info( $ticket->id_ticket );
$this->info( Ticket::toStatusName(Ticket::STATUS_DELETED)
. "->"
. Ticket::toStatusName(Ticket::STATUS_ACTIVE)
);
}
/** @var \common\models\Transfer $transfer */
$transfer = $ticket->transfer;
if ($transfer->status == Transfer::STATUS_STORNO) {
$transfer->status = Transfer::STATUS_PAID;
$transfer->save(false);
$this->info( "Restore transfer: ");
$this->info( $transfer->id_transfer);
$this->info( Transfer::toStatusName(Transfer::STATUS_STORNO)
. "->"
. Ticket::toStatusName(Transfer::STATUS_PAID)
);
if (!isset($transfer->paid_at)) {
$cart = new ShoppingCart();
$cart->id_customer = $contract->customer->id_customer;
$cart->id_transfer = $transfer->id_transfer;
if (!$cart->save(false)) {
/** @noinspection SpellCheckingInspection */
$E_FAILED_TO_SAVE = "Vendég kosár hozzárendelés sikertelen!";
\Yii::error($E_FAILED_TO_SAVE);
throw new \Exception($E_FAILED_TO_SAVE);
}
}
}
}
}
$tx->commit();
$this->info("Ready");
} catch (\Throwable $e) {
$tx->rollBack();
}
}
private function info($msg)
{
echo $msg . "\n";
}
/**
* @param \common\models\Contract $contract
* @param \common\models\TicketInstallmentRequest[] $parts
*/
private function log($contract, $parts)
{
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
foreach ($contract->getAttributes() as $key => $value) {
echo $key . "=" . $value . ";";
}
echo "\n";
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
foreach ($parts as $part) {
echo "----------------------------------------------------------------------\n";
foreach ($part->getAttributes() as $key => $value) {
echo $key . "=" . $value . ";";
}
echo "\n";
}
}
}

View File

@ -66,12 +66,13 @@ class ContractController extends Controller {
] );
}
/**
* Displays a single Contract model.
*
* @param integer $id
* @return mixed
*/
/**
* Displays a single Contract model.
*
* @param integer $id
* @return mixed
* @throws NotFoundHttpException
*/
public function actionView($id) {
$model = $this->findModel ( $id );
$customer = $model->customer;
@ -111,13 +112,14 @@ class ContractController extends Controller {
}
}
/**
* Updates an existing Contract model.
* If update is successful, the browser will be redirected to the 'view' page.
*
* @param integer $id
* @return mixed
*/
/**
* Updates an existing Contract model.
* If update is successful, the browser will be redirected to the 'view' page.
*
* @param integer $id
* @return mixed
* @throws NotFoundHttpException
*/
public function actionUpdate($id) {
$model = $this->findModel ( $id );
@ -133,13 +135,15 @@ class ContractController extends Controller {
}
}
/**
* Deletes an existing Contract model.
* If deletion is successful, the browser will be redirected to the 'index' page.
*
* @param integer $id
* @return mixed
*/
/**
* Deletes an existing Contract model.
* If deletion is successful, the browser will be redirected to the 'index' page.
*
* @param integer $id
* @return mixed
* @throws NotFoundHttpException
* @throws \yii\db\StaleObjectException
*/
public function actionDelete($id) {
$this->findModel ( $id )->delete ();
@ -197,9 +201,14 @@ class ContractController extends Controller {
] );
}
/**
* EGY RÉSZLET KIFIZETÉSE
*/
/**
* Cancel contract.
* @param $id
* @param $flag
* @return \yii\web\Response
* @throws NotFoundHttpException
* @throws \yii\db\Exception
*/
public function actionCancel($id,$flag) {
$contract = $this->findModel ( $id );
@ -236,6 +245,7 @@ class ContractController extends Controller {
'product_number' => Product::$BUNTETES
] )->one ();
// if there is a fee , generate fee and put it to the shopping cart
if (isset ( $productBuntetes )) {
if ($buntetes > 0) {
@ -286,7 +296,12 @@ class ContractController extends Controller {
] );
}
public function actionMake($id) {
/**
* @param $id
* @return string|\yii\web\Response
* @throws \yii\db\Exception
*/
public function actionMake($id) {
$customer = Customer::findOne ( $id );
if (! isset ( $customer )) {
@ -327,7 +342,12 @@ class ContractController extends Controller {
] );
}
public function actionContract($id){
/**
* @param $id
* @throws NotFoundHttpException
* @throws \yii\base\InvalidConfigException
*/
public function actionContract($id){
$model = $this->findModel($id);
//$mpdf=new \mPDF('utf-8', 'A4');