add contract

This commit is contained in:
2016-01-25 01:43:19 +01:00
parent fd4d38ab44
commit df14401b28
47 changed files with 2868 additions and 766 deletions

View File

@@ -6,10 +6,20 @@ use \Yii;
class Helper {
public static function getDateTimeString(){
public static function getDateTimeString( ){
return date("Y-m-d H:i:s");
}
public static function getArrayValue($arr,$key,$def){
$result = $def;
if ( array_key_exists($key, $arr)){
$result = $arr[$key];
}
return $result;
}
public static function hufRound($m) {
$result = round ( $m / 5, 0 ) * 5;
return $result;

View File

@@ -5,13 +5,16 @@ namespace common\components\giro;
use common\components\giro\GiroBase;
/**
*
* @property common\components\giro\GiroUzenetsorszam $uzenetSorszam
* @property common\components\giro\GiroBankszamla $kezdemenyezoBankszamla
*@property common\components\giro\GiroBeszedFej $fej
*@property common\components\giro\GiroBeszedLab $lab
*@property common\components\giro\GiroBeszedTetel[] $tetelek
*
*/
class GiroBeszed extends GiroBase {
public $fej;
public $lab;
public $tetelek = [];
public function __construct() {
}
@@ -36,7 +39,7 @@ class GiroBeszed extends GiroBase {
$fej->kezdemenyezoBankszamla->szamlaszam = \Yii::$app->params['ugiro_kezdemenyezo_szamlaszam']; // "5860025215371128";
// $fej->kezdemenyezoBankszamla->bankszerv = "58600252"; // "TAKBHUHB";
$fej->ertesitesiHatarido = "";
$fej->kezdemenyezoCegNeve = \Yii::$app->params['company'];
$fej->kezdemenyezoCegNeve = \Yii::$app->params['company_name'];
return $fej->toString ();
}
@@ -57,12 +60,12 @@ class GiroBeszed extends GiroBase {
public static function createTetel($request,$sorszam,$terhelesiDatum) {
$tetel = new GiroBeszedTetel ();
$customer = $request->customer;
$tetel->tetelSorszam = $sorszam;
$tetel->tetelSorszam = $request->number;
$tetel->terhelesiDatum = $terhelesiDatum;
$tetel->osszeg = $request->money;
// $tetel->kotelezettBankszamla->bankszerv = "58600252";
$tetel->kotelezettBankszamla->szamlaszam = $customer->bank_account;
$tetel->ugyfelazonositoAKezdemenyezonel = $request->id_ticket_installment_request;
$tetel->ugyfelazonositoAKezdemenyezonel = $customer->id_customer;
// $tetel->ugyfelNeve = "Schneider Roland";
// $tetel->ugyfelCime = "Mosonmagyarovar, Gardonyi 31";
$tetel->szamlaTulajdonosNeve = $customer->name;
@@ -84,4 +87,18 @@ class GiroBeszed extends GiroBase {
return $lab->toString ();
}
public function toString( ) {
$s = "";
$s .= $this->fej->toString();
foreach ($this->tetelek as $tetel ){
$s .= $tetel->toString();
}
$s .= $this->lab->toString();
return $s;
}
}

View File

@@ -9,7 +9,38 @@ use common\components\giro\GiroBase;
class GiroBeszedTetel extends GiroBase{
public $rekordTipus = "02";
/**
* 3 8
T211
tételsorszám
N
6
K
* */
public $tetelSorszam = 0;
/**
* @var string $terhelesiDatum
* 9 16
T212
terhelési / esedékességi dátum
N
8
ééééhhnn
K
ezen a dátumon (év, hó, nap) kell megterhelni a kötelezett számláját a beszedendő összeggel
* Ellenőrzés
* 9 16
T212
terhelési / esedékességi dátum 1
érvényes / időhatáron belüli
dátum?
E <= D <= E + 8 ?
33 T
érvénytelen terhelési dátum
*
* A D terhelési dátumnak érvényes naptári napnak kell lennie, valamint nem lehet kisebb
és legfeljebb 8 munka- / elszámolási nappal lehet későbbi, mint az E elszámolási dátum.
* */
public $terhelesiDatum = "";
public $osszeg;
public $kotelezettBankszamla;

View File

@@ -47,4 +47,24 @@ class GiroDETSTA extends GiroBase {
return $detsta;
}
/**
* @param common\components\giro\GiroBeszed $beszed
* */
public static function createBeszedAnswer($beszed){
// /**@var common\components\giro\GiroBeszed $beszed*/
$beszed = new GiroBeszed();
$detsta = new GiroDETSTA();
$detsta->fej = new GiroDETSTAFej();
$detsta->fej->jelentesJelzo = 8;
$detsta->fej->kezdemenyezoAzonosito = $beszed->fej->kezdemenyezoAzonosito;
$detsta->fej->csoportosUzenetSorszam->osszeallitasDatuma = $beszed->fej->uzenetSorszam->osszeallitasDatuma;
$detsta->fej->csoportosUzenetSorszam->sorszam = $beszed->fej->uzenetSorszam->sorszam;
$detsta->fej->detstaUzenetSorszam->osszeallitasDatuma = $beszed->fej->uzenetSorszam->osszeallitasDatuma;
$detsta->fej->detstaUzenetSorszam = $beszed->fej->uzenetSorszam->sorszam;
$detsta->lab = new GiroDETSTALab();
}
}

View File

@@ -4,8 +4,13 @@ namespace common\components\giro;
/**
*
* @property common\components\giro\GiroUzenetsorszam $csoportosUzenetSorszam
* @property common\components\giro\GiroBankszamla $kezdemenyezoBankszamla
* @property string $recordTipus
* @property string $teljesitettTetelekSzama
* @property string $teljesitettTetelekOsszerteke
* @property string $visszautasitottTetelekSzama
* @property string $visszautasitottTetelekSzama
* @property string $megNemValaszoltTetelekSzama
* @property string $megNemValaszoltTetelekOsszerteke
*
*/
class GiroDETSTALab extends GiroBase {

View File

@@ -25,6 +25,7 @@ class Card extends \common\models\BaseFitnessActiveRecord
const TYPE_QRCODE = 20;
const TYPE_BARCODE = 30;
const TYPE_OLD = 40;
const TYPE_EMPLOYEE = 50;
/**
* @inheritdoc
@@ -95,6 +96,7 @@ class Card extends \common\models\BaseFitnessActiveRecord
self::TYPE_QRCODE => Yii::t('common/card', 'QRCODE'),
self::TYPE_BARCODE => Yii::t('common/card', 'BARCODE'),
self::TYPE_OLD => Yii::t('common/card', 'OLD'),
self::TYPE_EMPLOYEE => Yii::t('common/card', 'Munkatárs'),
];
}

172
common/models/Contract.php Normal file
View File

@@ -0,0 +1,172 @@
<?php
namespace common\models;
use Yii;
use yii\helpers\ArrayHelper;
use yii\behaviors\TimestampBehavior;
use common\components\Helper;
/**
* This is the model class for table "contract".
*
* @property integer $id_contract
* @property integer $id_user
* @property integer $id_customer
* @property integer $status
* @property integer $flag
* @property integer $part_paid
* @property integer $part_count
* @property integer $part_required
* @property integer $id_ticket_type
* @property string $expired_at
* @property string $created_at
* @property string $updated_at
*/
class Contract extends \yii\db\ActiveRecord
{
public static $STATUS_PAID = 10;
public static $STATUS_NOT_PAID = 20;
public static $FLAG_DELETED = 10;
public static $FLAG_CANCELED = 20;
public static $FLAG_ACTIVE= 30;
public static $FLAG_EXPIRED = 40;
public function behaviors()
{
return ArrayHelper::merge( [
[
'class' => TimestampBehavior::className(),
'value' => function(){ return Helper::getDateTimeString(); }
],
], parent::behaviors());
}
/**
* @inheritdoc
*/
public static function tableName()
{
return 'contract';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
// [['id_user', 'id_customer', 'status', 'flag', 'part_paid', 'part_count', 'part_required'], 'integer'],
// [['expired_at', 'created_at', 'updated_at'], 'required'],
// [['expired_at', 'created_at', 'updated_at'], 'safe']
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id_contract' => Yii::t('common/contract', 'Szerződés azonosító'),
'id_user' => Yii::t('common/contract', 'Felhasználó'),
'id_customer' => Yii::t('common/contract', 'Vendég'),
'status' => Yii::t('common/contract', 'Státusz'),
'flag' => Yii::t('common/contract', 'Flag'),
'part_count' => Yii::t('common/contract', 'Részletek száma'),
'part_paid' => Yii::t('common/contract', 'Fizetett részletek'),
'part_required' => Yii::t('common/contract', 'Esedékes részlet'),
'expired_at' => Yii::t('common/contract', 'Lejárati dátum'),
'created_at' => Yii::t('common/contract', 'Létrehozva'),
'updated_at' => Yii::t('common/contract', 'Updated At'),
];
}
public function getTicketType(){
return $this->hasOne(TicketType::className(), ['id_ticket_type' => 'id_ticket_type']);
}
public function getCustomer(){
return $this->hasOne(Customer::className(), ['id_customer' => 'id_customer']);
}
public function getCustomerName(){
$customer = $this->customer;
$result = "";
if ( isset($customer)){
$result = $customer->name;
}
return $result;
}
public function getUser(){
return $this->hasOne(User::className(), ['id' => 'id_user']);
}
public function getUserName(){
$user = $this->user;
$result = "";
if ( isset($user)){
$result = $user->username;
}
return $result;
}
public function getRequests(){
return $this->hasMany(TicketInstallmentRequest::className(), ['id_contract' => 'id_contract']);
}
// public static $STATUS_PAID = 10;
// public static $STATUS_NOT_PAID = 20;
// public static $FLAG_DELETED = 10;
// public static $FLAG_CANCELED = 20;
// public static $FLAG_ACTIVE= 30;
// public static $FLAG_EXPIRED = 40;
public static function statuses(){
return [
static::$STATUS_NOT_PAID => "Nincs fizetve",
static::$STATUS_PAID => "Fizetve",
];
}
public static function flags(){
return [
static::$FLAG_ACTIVE => "Aktív",
static::$FLAG_CANCELED => "Felbontva",
static::$FLAG_DELETED => "Törölve",
static::$FLAG_EXPIRED => "Lejárt",
];
}
public static function toStatusName($status){
return Helper::getArrayValue(self::statuses(), $status, "");
}
public static function toFlangName($flag){
return Helper::getArrayValue(self::flags(), $flag, "");
}
public function getStatusName() {
return self::toStatusName($this->status);
}
public function getFlagName() {
return self::toFlangName($this->flag);
}
public function isStatusNotPaid(){
return $this->status == static::$STATUS_NOT_PAID;
}
public function canCancel() {
return $this->flag == static::$FLAG_ACTIVE;
}
}

View File

@@ -29,6 +29,8 @@ class Product extends \common\models\BaseFitnessActiveRecord {
const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;
public static $BUNTETES = "buntetes3000";
/**
* @inheritdoc
*/

View File

@@ -108,6 +108,9 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
public function getCustomer(){
return $this->hasOne( Customer::className(), ["id_customer" =>"id_customer" ] );
}
public function getContract(){
return $this->hasOne( Contract::className(), ["id_contract" =>"id_contract" ] );
}
public function getTicket(){
return $this->hasOne( Ticket::className(), ["id_ticket" =>"id_ticket", ] ) ;
@@ -119,13 +122,27 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
->viaTable('ugiro_request_assignment', [ 'id_request' => 'id_ticket_installment_request' ]);
}
public function getTicketExpirationDate(){
return strtotime( $this->request_target_time_at . " +1 month -1 day") ;
}
public function isStatusAccepted(){
return $this->status == static::$STATUS_ACCEPTED || $this->status == static::$STATUS_ACCEPTED_MANUAL;
}
public function isStatusRejected(){
return $this->status == static::$STATUS_REJECTED ;
}
public function isStatusCanceled(){
return $this->status == static::$STATUS_CANCELED ;
}
public function isStatusPending(){
return $this->status == static::$STATUS_PENDING ;
}
public function getIdGiro(){
$result = null;
$giro = $this->ugiro;
@@ -145,12 +162,15 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
public function applyStatus($status, $partRequired = false, $visszajelzes = "", $comment = ""){
if ( $status == static::$STATUS_ACCEPTED || $status == static::$STATUS_ACCEPTED_MANUAL){
if ( !$this->isStatusAccepted() ){
$this->status = $status;
$tranfer = $this->addTransfer();
$this->status = $status;
$this->id_transfer = $tranfer->id_transfer;
$this->request_processed_at = Helper::getDateTimeString();
$this->save(false);
$this->applyNewTicketState($partRequired);
// $this->applyNewTicketState($partRequired);
return true;
}else{
return false;
@@ -161,18 +181,19 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
$this->comment = $comment;
$this->request_processed_at = Helper::getDateTimeString();
$this->save(false);
$this->applyNewTicketState($partRequired);
// $this->applyNewTicketState($partRequired);
return true;
}
}
protected function applyNewTicketState($partRequired = false){
if ( $partRequired ){
$this->ticket->setPartRequired($this);
}
$this->ticket->applyTicketInstallmentRequest($this);
$this->ticket->save(false);
}
// protected function applyNewTicketState($partRequired = false){
// if ( $partRequired ){
// $this->ticket->setPartRequired($this);
// }
// $this->ticket->applyTicketInstallmentRequest($this);
// $this->ticket->save(false);
// }
protected function addTransfer(){
@@ -202,18 +223,18 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
* @param common\models\TicketType $type
* @return common\models\TicketInstallmentRequest[]
* */
public static function createInstallments($ticket,$type,$customer){
public static function createInstallments($ticket,$type,$customer,$contract){
$result = [];
if ( $type->isInstallment() ){
$count = $type->installment_count;
$discount = $ticket->discount;
$money = $type->price_brutto;
$money = $type->installment_money;
if ( isset($discount ) ){
$money = Discount::applyDiscount($money, $discount);
}
$ticketCreatedAt = time();
for ( $i = 1; $i <= $count; $i++){
$request = TicketInstallmentRequest::createInstallment($ticket, $type, $customer, $money, $ticketCreatedAt, $i);
$request = TicketInstallmentRequest::createInstallment($ticket, $type, $customer, $contract, $money, $ticketCreatedAt, $i);
$result[] = $request;
}
@@ -221,7 +242,7 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
return $result;
}
public static function createInstallment($ticket,$type,$customer,$money,$ticketCreated,$index){
public static function createInstallment($ticket,$type,$customer,$contract,$money,$ticketCreated,$index){
$request = new TicketInstallmentRequest();
$request->id_ticket = $ticket->id_ticket;
$request->id_customer = $customer->id_customer;
@@ -231,6 +252,7 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
$request->request_processed_at = null;
$request->request_sent_at = null;
$request->money = $money;
$request->id_contract = $contract->id_contract;
return $request;
}
@@ -257,4 +279,8 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
return $result;
}
public function getStatusName(){
return static::toStatusName($this->status);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -271,7 +271,7 @@ class TransferSaleSearch extends Transfer
protected function readProducts(){
$query = (new \yii\db\Query());
$query->select([ 'transfer.id_transfer as id_transfer', 'customer.name as customer_name' ,'user.username as user_name','account.name as account_name' , 'product_category.name as product_category_name', 'product.name as product_name', 'transfer.money AS product_money', 'transfer.count AS product_count', 'transfer.money AS product_money','transfer.item_price AS product_item_price', 'transfer.created_at as product_created_at','transfer.paid_at as product_paid_at']);
$query->select([ 'transfer.payment_method as transfer_payment_method', 'transfer.id_transfer as id_transfer', 'customer.name as customer_name' ,'user.username as user_name','account.name as account_name' , 'product_category.name as product_category_name', 'product.name as product_name', 'transfer.money AS product_money', 'transfer.count AS product_count', 'transfer.money AS product_money','transfer.item_price AS product_item_price', 'transfer.created_at as product_created_at','transfer.paid_at as product_paid_at']);
$query->from('transfer');
$query->andWhere(['transfer.type' => Transfer::TYPE_PRODUCT]);
$query->innerJoin("sale", "sale.id_sale = transfer.id_object");