diff --git a/backend/controllers/TestController.php b/backend/controllers/TestController.php index a2d33ef..b1be050 100644 --- a/backend/controllers/TestController.php +++ b/backend/controllers/TestController.php @@ -2,27 +2,17 @@ namespace backend\controllers; -use common\models\City; use yii\web\Controller; -use backend\models\GiroBeszedForm; /** * CityController implements the CRUD actions for City model. */ class TestController extends Controller { - - - - public function actionCreateBeszed(){ - - $model = new GiroBeszedForm(); - - if ($model->load(\Yii::$app->request->post()) ) { - $model->run(); - } - - return $this->render("_create_beszed",['model' => $model]); + + public function actionIndex(){ + + return "ok"; } diff --git a/common/components/DateUtil.php b/common/components/DateUtil.php new file mode 100644 index 0000000..7cc9e58 --- /dev/null +++ b/common/components/DateUtil.php @@ -0,0 +1,68 @@ +setTimestamp($timestamp); + } + } + + $monthToAdd = $monthCount; + + + $year = $d1->format('Y'); + $month = $d1->format('n'); + $day = $d1->format('d'); + + $year += floor($monthToAdd / 12); + $monthToAdd = $monthToAdd % 12; + $month += $monthToAdd; + if ($month > 12) { + $year++; + $month = $month % 12; + if ($month === 0) + $month = 12; + } + + if (!checkdate($month, $day, $year)) { + $d2 = \DateTime::createFromFormat('Y-n-j', $year . '-' . $month . '-1'); + $d2->modify('last day of'); + } else { + $d2 = \DateTime::createFromFormat('Y-n-d', $year . '-' . $month . '-' . $day); + } + $d2->setTime(0, 0, 0); + + + return $d2; + } + + + public static function formatUtc($dateTimeObject) + { + $formatter = new Formatter; + $formatter->datetimeFormat = 'php:Y-m-d H:i:s'; + $formatter->timeZone = 'UTC'; + return $formatter->asDatetime($dateTimeObject); + } + +} \ No newline at end of file diff --git a/common/models/TicketInstallmentRequest.php b/common/models/TicketInstallmentRequest.php index 453d43d..8867389 100644 --- a/common/models/TicketInstallmentRequest.php +++ b/common/models/TicketInstallmentRequest.php @@ -2,7 +2,9 @@ namespace common\models; -use Yii; +use common\components\DateUtil; +use /** @noinspection PhpMethodOrClassCallIsNotCaseSensitiveInspection */ + Yii; use yii\helpers\ArrayHelper; use yii\behaviors\TimestampBehavior; use common\components\Helper; @@ -32,6 +34,9 @@ use common\components\Helper; * @property \common\models\Contract contract * @property \common\models\Customer customer * @property string number + * @property mixed ticket + * @property integer id_contract + * @property mixed ugiro */ class TicketInstallmentRequest extends \yii\db\ActiveRecord { @@ -125,9 +130,21 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord } public function getTicketExpirationDate(){ - $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"); + $contract = $this->contract; + + + $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); return $date->getTimestamp(); @@ -153,8 +170,11 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord public function isStatusSent(){ return $this->status == static::$STATUS_SENT ; } - - public function getIdGiro(){ + + /** + * @return \common\models\Ugiro + */ + public function getIdGiro(){ $result = null; $giro = $this->ugiro; if ( isset($giro) ){ @@ -162,15 +182,21 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord } return $result; } - - /** - * Megbízás státuszának beállítása - * - * Létrehozza a szükséges ticket/transfer objectumokat - * - * @param boolean $partRequired ha igaz, a bérleten a part mezőt változtatjuk - * */ - public function applyStatus($status, $partRequired = false, $visszajelzes = "", $comment = ""){ + + /** + * Megbízás státuszának beállítása + * + * Létrehozza a szükséges ticket/transfer objectumokat + * + * @param $status + * @param boolean $partRequired ha igaz, a bérleten a part mezőt változtatjuk + * + * @param string $visszajelzes + * @param string $comment + * @return bool + */ + public function applyStatus($status, /** @noinspection PhpUnusedParameterInspection */ + $partRequired = false, $visszajelzes = "", $comment = ""){ $contract = $this->contract; $contract->part_required = $contract->part_required +1; if ( $status == static::$STATUS_ACCEPTED || $status == static::$STATUS_ACCEPTED_MANUAL){ @@ -218,36 +244,44 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord // $this->ticket->applyTicketInstallmentRequest($this); // $this->ticket->save(false); // } - - - protected function addTransfer(){ - - $account = Account::findOne($this->ticket->id_account); + + + /** + * @return Transfer + */ + protected function addTransfer(){ + + /** @var \common\models\Account $account */ + $account = Account::findOne($this->ticket->id_account); $discount = null; if ( isset($this->ticket->id_account)){ $discount = Discount::findOne( $this->ticket->id_discount ); } - - $transfer = Transfer::createTicketTransfer($account, $discount, null, 1, $this->ticket); + + /** @var \common\models\Account $account */ + /** @noinspection PhpParamsInspection */ + $transfer = Transfer::createTicketTransfer($account, $discount, null, 1, $this->ticket); $transfer->status = Transfer::STATUS_PAID; $transfer->paid_at = date('Y-m-d H:i:s' ) ; $transfer->paid_by = \Yii::$app->user->id; $transfer->payment_method = Transfer::PAYMENT_METHOD_TRANSFER; $transfer->money = $this->money; - $transfer->comment = "Csoportos beszedes"; + $transfer->comment = "Csoportos beszedés"; $transfer->id_user = \Yii::$app->user->id; $transfer->id_customer = $this->ticket->card->customer->id_customer; $transfer->save(false); return $transfer; } - - - /** - * @param \common\models\Ticket $ticket - * @param \common\models\TicketType $type - * @return \common\models\TicketInstallmentRequest[] - * */ + + + /** + * @param \common\models\Ticket $ticket + * @param \common\models\TicketType $type + * @param $customer + * @param $contract + * @return TicketInstallmentRequest[] + */ public static function createInstallments($ticket,$type,$customer,$contract){ $result = []; if ( $type->isInstallment() ){ @@ -257,26 +291,35 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord if ( isset( $discount ) ){ $money = Discount::applyDiscount( $money, $discount ); } - - - + for ( $i = 1; $i <= $count; $i++){ $request = TicketInstallmentRequest::createInstallment($ticket, $type, $customer, $contract, $money, null, $i); $result[] = $request; } - } return $result; } - - public static function createInstallment($ticket,$type,$customer,$contract,$money,$ticketCreated,$index){ + + /** + * @param $ticket + * @param $type + * @param $customer + * @param $contract + * @param $money + * @param $ticketCreated + * @param $index + * @return TicketInstallmentRequest + */ + public static function createInstallment(/** @noinspection PhpUnusedParameterInspection */ + $ticket, $type, $customer, $contract, $money, $ticketCreated, $index){ $request = new TicketInstallmentRequest(); // $request->id_ticket = $ticket->id_ticket; $request->id_customer = $customer->id_customer; $request->status = TicketInstallmentRequest::$STATUS_PENDING; $request->priority = $index; $date = \DateTime::createFromFormat("Y.m.d", $contract->started_at, new \DateTimeZone( 'UTC')); - $date->modify("+$index month"); + $date = DateUtil::addMonth($date->getTimestamp(),$index); +// $date->modify("+$index month"); $date->setTime(0, 0, 0); $request->request_target_time_at = $date->format ( 'Y-m-d H:i:s' ); $request->request_processed_at = null; diff --git a/frontend/web/js/ticket.sell.js b/frontend/web/js/ticket.sell.js index 6930182..1962e0e 100644 --- a/frontend/web/js/ticket.sell.js +++ b/frontend/web/js/ticket.sell.js @@ -228,20 +228,20 @@ function TicketSell(o){ units = app.defaults.ticket_type.time_unit_count; app.defaults.end_date = moment(app.defaults.start_date); switch(app.defaults.ticket_type.time_unit_type){ - case app.defaults.time_unit_day: - app.defaults.end_date.add( units, 'days'); - app.defaults.end_date.subtract( 1, 'days'); - break; - case app.defaults.time_unit_month: - app.defaults.end_date.add( units, 'month'); - app.defaults.end_date.subtract( 1, 'days'); - break; - case app.defaults.time_unit_month_reference: - if ( units > 1){ - app.defaults.end_date.add( units -1, 'month'); - } - app.defaults.end_date.endOf('month'); - break; + case app.defaults.time_unit_day: + app.defaults.end_date.add( units, 'days'); + app.defaults.end_date.subtract( 1, 'days'); + break; + case app.defaults.time_unit_month: + app.defaults.end_date.add( units, 'month'); + app.defaults.end_date.subtract( 1, 'days'); + break; + case app.defaults.time_unit_month_reference: + if ( units > 1){ + app.defaults.end_date.add( units -1, 'month'); + } + app.defaults.end_date.endOf('month'); + break; } }