Finish version/v.0.0.86
This commit is contained in:
commit
eb59cf9424
@ -202,14 +202,26 @@ class InventoryItemController extends Controller
|
||||
|
||||
$model->save(false);
|
||||
|
||||
$prev = Url::previous("inventory-item-index");
|
||||
\Yii::$app->session->setFlash('success', "Mennyiség elmentve: " . $model->productName . ' - ' .$model->count . ' db');
|
||||
|
||||
if (isset($prev)) {
|
||||
return $this->redirect($prev);
|
||||
} else {
|
||||
// $prev = Url::previous("inventory-item-index");
|
||||
|
||||
|
||||
|
||||
// if (isset($prev)) {
|
||||
// return $this->redirect($prev);
|
||||
// } else {
|
||||
// return $this->redirect(['index', 'id' => $inventory->id_inventory]);
|
||||
// }
|
||||
|
||||
$next = InventoryItem::findNextItemAlphabetical($model->id_inventory_item);
|
||||
if ( isset($next)){
|
||||
return $this->redirect(['inventory-item/update', 'id' => $next]);
|
||||
}else{
|
||||
return $this->redirect(['index', 'id' => $inventory->id_inventory]);
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
return $this->render('update', [
|
||||
'model' => $model,
|
||||
|
||||
@ -2,9 +2,7 @@
|
||||
|
||||
namespace backend\controllers;
|
||||
|
||||
use common\models\City;
|
||||
use yii\web\Controller;
|
||||
use backend\models\GiroBeszedForm;
|
||||
|
||||
/**
|
||||
* CityController implements the CRUD actions for City model.
|
||||
@ -12,17 +10,9 @@ use backend\models\GiroBeszedForm;
|
||||
class TestController extends Controller
|
||||
{
|
||||
|
||||
public function actionIndex(){
|
||||
|
||||
|
||||
public function actionCreateBeszed(){
|
||||
|
||||
$model = new GiroBeszedForm();
|
||||
|
||||
if ($model->load(\Yii::$app->request->post()) ) {
|
||||
$model->run();
|
||||
}
|
||||
|
||||
return $this->render("_create_beszed",['model' => $model]);
|
||||
return "ok";
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,18 +2,15 @@
|
||||
|
||||
namespace backend\models;
|
||||
|
||||
use Yii;
|
||||
use /** @noinspection PhpMethodOrClassCallIsNotCaseSensitiveInspection */
|
||||
Yii;
|
||||
use yii\base\Model;
|
||||
use common\models\Card;
|
||||
use common\models\Customer;
|
||||
use common\models\Ticket;
|
||||
use common\models\Account;
|
||||
use yii\web\UploadedFile;
|
||||
use common\models\Inventory;
|
||||
use yii\base\Exception;
|
||||
use common\models\Product;
|
||||
use common\models\InventoryGroup;
|
||||
use common\models\InventoryItem;
|
||||
use yii\db\Expression;
|
||||
use yii\db\Query;
|
||||
use common\models\Procurement;
|
||||
use common\models\Transfer;
|
||||
@ -52,6 +49,8 @@ class InventoryItemForm extends Model{
|
||||
public $last_inventory_item;
|
||||
public $inventory_item;
|
||||
|
||||
public $next_item_index;
|
||||
|
||||
public function rules(){
|
||||
return [
|
||||
[[ 'name', 'count'], 'required'],
|
||||
@ -63,14 +62,16 @@ class InventoryItemForm extends Model{
|
||||
];
|
||||
}
|
||||
|
||||
public function validateType($attribute,$params){
|
||||
public function validateType(/** @noinspection PhpUnusedParameterInspection */
|
||||
$attribute, $params){
|
||||
if ( array_search($this->type, ['product','group']) === false ){
|
||||
\Yii::error("Típus nem megfelelő: " . $this->type);
|
||||
$this->addError("name","Nincs termék vagy termék csoport kiválasztva");
|
||||
}
|
||||
}
|
||||
|
||||
public function validateId($attribute,$params){
|
||||
public function validateId(/** @noinspection PhpUnusedParameterInspection */
|
||||
$attribute, $params){
|
||||
if ( !$this->hasErrors('type')){
|
||||
if ( $this->type == 'group'){
|
||||
$this->inventoryGroup = InventoryGroup::findOne($this->id_product);
|
||||
@ -151,6 +152,9 @@ class InventoryItemForm extends Model{
|
||||
$query->andWhere([ '>', 'procurement.created_at' ,$this->last_inventory_item->created_at]);
|
||||
}
|
||||
|
||||
//$query->andWhere([ '>', 'procurement.created_at' ,$this->inventory->created_at]);
|
||||
|
||||
|
||||
if ( $this->type == 'product') {
|
||||
$query->andWhere(['product.id_product' => $this->product->id_product]);
|
||||
}else{
|
||||
@ -171,6 +175,10 @@ class InventoryItemForm extends Model{
|
||||
$query->andWhere(['in', 'transfer.status' ,[Transfer::STATUS_PAID ,Transfer::STATUS_NOT_PAID ] ]);
|
||||
$query->andWhere(['transfer.type' => Transfer::TYPE_PRODUCT]);
|
||||
|
||||
if ( isset($this->last_inventory_item ) ){
|
||||
$query->andWhere([ '>', 'transfer.created_at' ,$this->last_inventory_item->created_at]);
|
||||
}
|
||||
|
||||
if ( $this->type == 'product') {
|
||||
$query->andWhere(['product.id_product' => $this->product->id_product]);
|
||||
}else{
|
||||
@ -275,12 +283,10 @@ class InventoryItemForm extends Model{
|
||||
|
||||
foreach ($this->products as $product ){
|
||||
$this->productOptions[]= [ 'type' =>'product', 'id' => $product->id_product ,'name' => $product->name . " (Termék/" .$product->productCategoryName ."/" . $product->accountName .")" ];
|
||||
|
||||
}
|
||||
|
||||
foreach ($this->inventoryGroups as $inventoryGroup ){
|
||||
$this->productOptions[] = ['type' =>'group', 'id' =>$inventoryGroup->id_inventory_group ,'name' =>$inventoryGroup->name ."/Termékcsoport" ];
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -294,4 +300,6 @@ class InventoryItemForm extends Model{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -19,7 +19,7 @@ $options = [];
|
||||
$options['products'] = $model->productOptions;
|
||||
$options['url_product_find'] = Url::toRoute(['product/find']);
|
||||
|
||||
$this->registerJs('inventoryItemCreate.init( '. json_encode($options) .' );');
|
||||
$this-> registerJs('inventoryItemCreate.init( '. json_encode($options) .' );');
|
||||
|
||||
?>
|
||||
<div class="inventory-item-create">
|
||||
|
||||
@ -24,6 +24,7 @@ $this->registerJs('inventoryItemIndex.init( ' . json_encode($options) . ' );');
|
||||
|
||||
?>
|
||||
|
||||
<!--suppress CssUnusedSymbol -->
|
||||
<style>
|
||||
.table th {
|
||||
white-space: normal;
|
||||
@ -38,6 +39,19 @@ $this->registerJs('inventoryItemIndex.init( ' . json_encode($options) . ' );');
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.col-b{
|
||||
/*background-color: #00a157;*/
|
||||
}
|
||||
|
||||
.table-striped > tbody > tr:nth-of-type(even) td.col-b {
|
||||
background-color: #DFE3E8;
|
||||
/*background-color: #D3D7DC;*/
|
||||
}
|
||||
.table-striped > tbody > tr:nth-of-type(odd) td.col-b {
|
||||
/*background-color: #E0E0E0;*/
|
||||
background-color: #ECECEC;
|
||||
}
|
||||
|
||||
</style>
|
||||
<div class="inventory-item-index">
|
||||
<h1><?= Html::encode($this->title) ?></h1>
|
||||
@ -65,7 +79,7 @@ $this->registerJs('inventoryItemIndex.init( ' . json_encode($options) . ' );');
|
||||
}
|
||||
?>
|
||||
<?php echo $this->render('_search', ['model' => $searchModel]); ?>
|
||||
<p>
|
||||
<div>
|
||||
Magyarázat:
|
||||
<ul>
|
||||
<li>
|
||||
@ -87,7 +101,7 @@ $this->registerJs('inventoryItemIndex.init( ' . json_encode($options) . ' );');
|
||||
Különbség: = "Leltározott mennyiség - ( "Előző leltár" + "Beszerzett mennyiség" - "Eladott mennyiség" )
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<?php echo Html::a("XLS letöltése", Url::current(['InventoryItemSearch[output]' => 'xls']), ['class' => 'btn btn-primary']) ?>
|
||||
</p>
|
||||
@ -100,7 +114,8 @@ $this->registerJs('inventoryItemIndex.init( ' . json_encode($options) . ' );');
|
||||
],
|
||||
[
|
||||
'attribute' => 'inventory_prev_name',
|
||||
'label' => 'Utolsó leltár'
|
||||
'label' => 'Utolsó leltár',
|
||||
'contentOptions' => ['class' => 'col-b']
|
||||
],
|
||||
[
|
||||
'attribute' => 'item_count_system',
|
||||
@ -111,7 +126,7 @@ $this->registerJs('inventoryItemIndex.init( ' . json_encode($options) . ' );');
|
||||
[
|
||||
'attribute' => 'item_count',
|
||||
'label' => 'Leltározott mennyiség (db)',
|
||||
'contentOptions' => ['class' => 'numeric']
|
||||
'contentOptions' => ['class' => 'numeric col-b']
|
||||
|
||||
],
|
||||
[
|
||||
@ -123,7 +138,7 @@ $this->registerJs('inventoryItemIndex.init( ' . json_encode($options) . ' );');
|
||||
[
|
||||
'attribute' => 'item_count_in',
|
||||
'label' => 'Beszerzett mennyiség (db)',
|
||||
'contentOptions' => ['class' => 'numeric']
|
||||
'contentOptions' => ['class' => 'numeric col-b' ]
|
||||
|
||||
],
|
||||
[
|
||||
@ -135,7 +150,7 @@ $this->registerJs('inventoryItemIndex.init( ' . json_encode($options) . ' );');
|
||||
[
|
||||
'attribute' => 'item_difference',
|
||||
'label' => 'Különbség (db)',
|
||||
'contentOptions' => ['class' => 'numeric']
|
||||
'contentOptions' => ['class' => 'numeric col-b']
|
||||
|
||||
],
|
||||
[
|
||||
@ -146,7 +161,7 @@ $this->registerJs('inventoryItemIndex.init( ' . json_encode($options) . ' );');
|
||||
[
|
||||
'attribute' => 'item_total_price_brutto',
|
||||
'label' => 'Összeg (Ft)',
|
||||
'contentOptions' => ['class' => 'numeric']
|
||||
'contentOptions' => ['class' => 'numeric col-b']
|
||||
],
|
||||
|
||||
|
||||
@ -165,7 +180,7 @@ $this->registerJs('inventoryItemIndex.init( ' . json_encode($options) . ' );');
|
||||
'urlCreator' => function ($action, $model) {
|
||||
$result = "";
|
||||
if ($action == 'update') {
|
||||
$result = Url::toRoute(['update-item', 'id' => $model['item_id_inventory_item']]);
|
||||
$result = Url::toRoute(['update', 'id' => $model['item_id_inventory_item']]);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
@ -7,10 +7,11 @@ use yii\widgets\DetailView;
|
||||
/* @var $model common\models\InventoryItem */
|
||||
|
||||
$this->title = Yii::t('common/inventory-item', 'Leltár termék');
|
||||
$this->params['breadcrumbs'][] = ['label' => Yii::t('common/inventory-item', 'Inventory Items'), 'url' => ['index']];
|
||||
$this->params['breadcrumbs'][] = ['label' => 'Leltár termékek', 'url' => ['index', 'id' => $model->id_inventory]];
|
||||
$this->params['breadcrumbs'][] = ['label' => $model->id_inventory_item, 'url' => ['view', 'id' => $model->id_inventory_item]];
|
||||
$this->params['breadcrumbs'][] = Yii::t('common/inventory-item', 'Update');
|
||||
?>
|
||||
|
||||
<div class="inventory-item-update">
|
||||
|
||||
<h1><?= Html::encode($this->title) ?></h1>
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
-0.0.86
|
||||
- add inventory "load sold count" for item fix
|
||||
- Detstat file > transfer type cash on failed
|
||||
- add ticket installment dateutal/addDay changes
|
||||
-0.0.85
|
||||
- add key assign/unassign log
|
||||
-0.0.84
|
||||
|
||||
68
common/components/DateUtil.php
Normal file
68
common/components/DateUtil.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: rocho
|
||||
* Date: 2016. 09. 08.
|
||||
* Time: 7:01
|
||||
*/
|
||||
|
||||
namespace common\components;
|
||||
|
||||
use yii\i18n\Formatter;
|
||||
|
||||
class DateUtil
|
||||
{
|
||||
|
||||
public static function addMonth($timestamp, $monthCount = 1)
|
||||
{
|
||||
|
||||
if ($timestamp instanceof \DateTime) {
|
||||
$d1 = $timestamp;
|
||||
} else {
|
||||
|
||||
$d1 = new \DateTime();
|
||||
|
||||
if (isset($timestamp)) {
|
||||
$d1->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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -149,7 +149,8 @@ class DetStatTetelProcessor extends Object {
|
||||
'discount'=> $discount,
|
||||
'contract'=> $this->contract,
|
||||
'ticketInstallmentRequest' => $megbizas,
|
||||
'transferStatus' => Transfer::STATUS_NOT_PAID
|
||||
'transferStatus' => Transfer::STATUS_NOT_PAID,
|
||||
'paymentMethod' => Transfer::PAYMENT_METHOD_CASH
|
||||
]
|
||||
);
|
||||
|
||||
@ -219,7 +220,7 @@ class DetStatTetelProcessor extends Object {
|
||||
* Szerződés módosítása, ha a detsta üzenetben a megbízás el lett fogadva
|
||||
* */
|
||||
protected function updateContractOnSuccess(){
|
||||
\Yii::info('Szerződés frissítése - megbizás elfogadva ' );
|
||||
\Yii::info('Szerződés frissítése - megbízás elfogadva ' );
|
||||
$this->incRequiredParts();
|
||||
$this->contract->part_paid = $this->contract->part_paid +1;
|
||||
$this->updateContractPaidStatus();
|
||||
@ -232,7 +233,7 @@ class DetStatTetelProcessor extends Object {
|
||||
}
|
||||
|
||||
protected function updateContractOnFail(){
|
||||
\Yii::info('Szerződés frissítése - megbizás visszautasítva ' );
|
||||
\Yii::info('Szerződés frissítése - megbízás visszautasítva ' );
|
||||
$this->incRequiredParts();
|
||||
$this->updateContractPaidStatus();
|
||||
// $this->contract->status = Contract::$STATUS_NOT_PAID;
|
||||
|
||||
@ -5,7 +5,7 @@ return [
|
||||
'supportEmail' => 'rocho02@gmail.com',
|
||||
'infoEmail' => 'info@rocho-net.hu',
|
||||
'user.passwordResetTokenExpire' => 3600,
|
||||
'version' => 'v0.0.85',
|
||||
'version' => 'v0.0.86',
|
||||
'company' => 'movar',//gyor
|
||||
'company_name' => "Freimann Kft.",
|
||||
'product_visiblity' => 'account',// on reception which products to display. account or global
|
||||
|
||||
@ -20,6 +20,8 @@ use common\components\Helper;
|
||||
* @property string $name
|
||||
* @property string $created_at
|
||||
* @property string $updated_at
|
||||
* @property mixed userName
|
||||
* @property mixed accountName
|
||||
*/
|
||||
class Inventory extends \common\models\BaseFitnessActiveRecord
|
||||
{
|
||||
|
||||
@ -2,10 +2,12 @@
|
||||
|
||||
namespace common\models;
|
||||
|
||||
use Yii;
|
||||
use /** @noinspection PhpMethodOrClassCallIsNotCaseSensitiveInspection */
|
||||
Yii;
|
||||
use yii\db\Expression;
|
||||
use yii\db\Query;
|
||||
use yii\helpers\ArrayHelper;
|
||||
use common\components\UserAwareBehavior;
|
||||
use common\components\Helper;
|
||||
use common\components\ProductAwareBehavior;
|
||||
|
||||
/**
|
||||
@ -28,6 +30,7 @@ use common\components\ProductAwareBehavior;
|
||||
* @property string $created_at
|
||||
* @property string $updated_at
|
||||
* @property mixed productName
|
||||
* @property mixed product
|
||||
*/
|
||||
class InventoryItem extends BaseFitnessActiveRecord
|
||||
{
|
||||
@ -36,7 +39,8 @@ class InventoryItem extends BaseFitnessActiveRecord
|
||||
public static $TYPE_INVENTORY_GROUP = 20;
|
||||
|
||||
|
||||
public static $UPDATE_COUNT = "
|
||||
public static /** @noinspection SqlResolve */
|
||||
$UPDATE_COUNT = "
|
||||
UPDATE product as p1
|
||||
inner JOIN ( select inventory_item.id_product as id_product , inventory_item.count as count
|
||||
from inventory_item
|
||||
@ -114,6 +118,10 @@ class InventoryItem extends BaseFitnessActiveRecord
|
||||
return $this->hasOne( Product::className() , [ 'id_inventory_group' => 'id_inventory_group' ]);
|
||||
}
|
||||
|
||||
public function getInventoryItemPrev(){
|
||||
return $this->hasOne( InventoryItem::className(),['id_inventory_item' => 'id_inventory_item_prev'] );
|
||||
}
|
||||
|
||||
public function getProductName(){
|
||||
$result = "";
|
||||
|
||||
@ -137,8 +145,10 @@ class InventoryItem extends BaseFitnessActiveRecord
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getName(){
|
||||
$name = "";
|
||||
|
||||
if ( isset($this->id_product )){
|
||||
$name = $this->getProductName();
|
||||
@ -171,6 +181,53 @@ class InventoryItem extends BaseFitnessActiveRecord
|
||||
$this->total_price_brutto = $price * $diff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function findNextItemAlphabetical($id_inventory_item){
|
||||
|
||||
$inventoryItem = InventoryItem::findOne($id_inventory_item);
|
||||
$id_inventory = $inventoryItem->id_inventory;
|
||||
$currentItemId = $id_inventory_item;
|
||||
|
||||
$query = new Query();
|
||||
$query->select([
|
||||
'inventory_item.id_inventory_item as inventory_item_id_inventory',
|
||||
new Expression(
|
||||
"case when inventory_item.type = " .InventoryItem::$TYPE_PRODUCT . " then product.name else inventory_group.name end as name"
|
||||
)
|
||||
]);
|
||||
|
||||
$query->from('inventory_item');
|
||||
$query->leftJoin("product", 'product.id_product = inventory_item.id_product and inventory_item.type =' .InventoryItem::$TYPE_PRODUCT);
|
||||
$query->leftJoin("inventory_group", 'inventory_group.id_inventory_group = inventory_item.id_product and inventory_item.type =' .InventoryItem::$TYPE_INVENTORY_GROUP);
|
||||
$query->andWhere(['id_inventory' => $id_inventory]);
|
||||
$query->orderBy("name");
|
||||
$result = $query->all();
|
||||
|
||||
$currentItemIndex = null;
|
||||
$size = count($result);
|
||||
for ( $i = 0; $i < $size; $i++ ){
|
||||
$item = $result[$i];
|
||||
$id = $item['inventory_item_id_inventory'];
|
||||
if ( $id == $currentItemId ){
|
||||
$currentItemIndex = $i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( isset( $currentItemIndex ) ){
|
||||
$next = ($currentItemIndex +1 );
|
||||
if ($size > $next){
|
||||
return $result[$next]['inventory_item_id_inventory'];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public function afterSave($insert, $changedAttributes){
|
||||
if ( !$insert ){
|
||||
// if ( $this->type == 'product'){
|
||||
|
||||
@ -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();
|
||||
@ -154,6 +171,9 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
return $this->status == static::$STATUS_SENT ;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \common\models\Ugiro
|
||||
*/
|
||||
public function getIdGiro(){
|
||||
$result = null;
|
||||
$giro = $this->ugiro;
|
||||
@ -168,9 +188,15 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
*
|
||||
* 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
|
||||
* */
|
||||
public function applyStatus($status, $partRequired = false, $visszajelzes = "", $comment = ""){
|
||||
*
|
||||
* @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){
|
||||
@ -220,14 +246,20 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
* @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 );
|
||||
}
|
||||
|
||||
/** @var \common\models\Account $account */
|
||||
/** @noinspection PhpParamsInspection */
|
||||
$transfer = Transfer::createTicketTransfer($account, $discount, null, 1, $this->ticket);
|
||||
|
||||
$transfer->status = Transfer::STATUS_PAID;
|
||||
@ -235,7 +267,7 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
$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);
|
||||
@ -246,8 +278,10 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
/**
|
||||
* @param \common\models\Ticket $ticket
|
||||
* @param \common\models\TicketType $type
|
||||
* @return \common\models\TicketInstallmentRequest[]
|
||||
* */
|
||||
* @param $customer
|
||||
* @param $contract
|
||||
* @return TicketInstallmentRequest[]
|
||||
*/
|
||||
public static function createInstallments($ticket,$type,$customer,$contract){
|
||||
$result = [];
|
||||
if ( $type->isInstallment() ){
|
||||
@ -258,25 +292,34 @@ class TicketInstallmentRequest extends \yii\db\ActiveRecord
|
||||
$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;
|
||||
|
||||
74
console/controllers/InventoryConsoleController.php
Normal file
74
console/controllers/InventoryConsoleController.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
namespace console\controllers;
|
||||
|
||||
use common\models\Inventory;
|
||||
use common\models\InventoryItem;
|
||||
use common\models\Product;
|
||||
use common\models\Transfer;
|
||||
use yii\console\Controller;
|
||||
use yii\db\Expression;
|
||||
use yii\db\Query;
|
||||
|
||||
|
||||
class InventoryConsoleController extends Controller{
|
||||
|
||||
|
||||
/**
|
||||
* @param $idInventory
|
||||
*/
|
||||
public function actionFixSold($idInventory){
|
||||
|
||||
$inventory = Inventory::findOne($idInventory);
|
||||
|
||||
|
||||
/** @var /common/models/InventoryItem[] $items */
|
||||
$items = InventoryItem::find()->andWhere(['id_inventory' => $inventory->id_inventory])->all();
|
||||
|
||||
/** @var /common/models/InventoryItem $item */
|
||||
foreach ($items as $item ){
|
||||
|
||||
$prev = $item->inventoryItemPrev;
|
||||
|
||||
if ( !isset($prev)){
|
||||
continue;
|
||||
}
|
||||
$start = $prev->created_at;
|
||||
$end = $item->created_at;
|
||||
|
||||
|
||||
$query = new Query();
|
||||
$query->select([
|
||||
new Expression(" coalesce( sum( transfer.count ),0)")
|
||||
]);
|
||||
$query->from('transfer');
|
||||
$query->innerJoin('sale','sale.id_sale = transfer.id_object');
|
||||
$query->innerJoin('product','sale.id_product = product.id_product');
|
||||
|
||||
$query->andWhere(['transfer.type' => Transfer::TYPE_PRODUCT]);
|
||||
$query->andWhere(['in', 'transfer.status', [Transfer::STATUS_NOT_PAID, Transfer::STATUS_PAID]]);
|
||||
$query->andWhere(['product.id_product' => $prev->id_product]);
|
||||
|
||||
$query->andWhere([ '>','transfer.created_at',$start ]);
|
||||
$query->andWhere([ '<','transfer.created_at',$end ]);
|
||||
|
||||
$products = $query->scalar();
|
||||
|
||||
$item->count_sold = $products;
|
||||
|
||||
$item->recalculateTotalPriceBrutto();
|
||||
|
||||
echo $item->price_brutto . " - ". $item->productName ."\n";
|
||||
|
||||
$item->save();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user