$producer = Producer::getCurrent() ; | $producer = Producer::getCurrent() ; | ||||
$json['producer'] = [ | $json['producer'] = [ | ||||
'credit' => $producer->credit | |||||
'credit' => $producer->credit, | |||||
'tiller' => $producer->tiller | |||||
]; | ]; | ||||
$distributionsArray = Distribution::searchAll([ | $distributionsArray = Distribution::searchAll([ | ||||
$json['one_distribution_week_active'] = $oneDistributionWeekActive ; | $json['one_distribution_week_active'] = $oneDistributionWeekActive ; | ||||
// tiller | |||||
if($producer->tiller) { | |||||
$tiller = new Tiller() ; | |||||
$json['tiller_is_synchro'] = (int) $tiller->isSynchro($date) ; | |||||
} | |||||
} | } | ||||
return $json ; | return $json ; | ||||
return ['success'] ; | return ['success'] ; | ||||
} | } | ||||
/** | |||||
* Synchronise les commandes avec la plateforme Tiller pour une date donnée. | |||||
* | |||||
* @param string $date | |||||
*/ | |||||
public function actionAjaxProcessSynchroTiller($date) | |||||
{ | |||||
$producerTiller = Producer::getConfig('tiller') ; | |||||
if($producerTiller) { | |||||
$tiller = new Tiller() ; | |||||
$isSynchro = $tiller->isSynchro($date) ; | |||||
if(!$isSynchro) { | |||||
$orders = Order::searchAll([ | |||||
'distribution.date' => $date | |||||
]) ; | |||||
$strDate = date('Y-m-d\T12:i:s+0000', strtotime($date) + 1) ; | |||||
if($orders && count($orders)) { | |||||
foreach($orders as $order) { | |||||
$lines = [] ; | |||||
foreach($order->productOrder as $productOrder) { | |||||
$lines[] = [ | |||||
'name' => $productOrder->product->name, | |||||
'price' => $productOrder->price * 100 * $productOrder->quantity, | |||||
'tax' => 5.5, | |||||
'date' => $strDate, | |||||
'quantity' => $productOrder->quantity | |||||
] ; | |||||
} | |||||
$tiller->postOrder([ | |||||
'externalId' => $order->id, | |||||
'type' => 1, | |||||
'status' => "CLOSED", | |||||
'openDate' => $strDate, | |||||
'closeDate' => $strDate, | |||||
'lines' => $lines, | |||||
'payments' => [[ | |||||
'type' => 'CASH', | |||||
'amount' => $order->getAmount(Order::AMOUNT_TOTAL) * 100, | |||||
'status' => 'ACCEPTED', | |||||
'date' => $strDate | |||||
]] | |||||
]) ; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | } |
Yii::$app->getSession()->setFlash('success', 'Paramètres mis à jour.'); | Yii::$app->getSession()->setFlash('success', 'Paramètres mis à jour.'); | ||||
return $this->redirect(['update', 'id' => $model->id, 'edit_ok' => true]); | return $this->redirect(['update', 'id' => $model->id, 'edit_ok' => true]); | ||||
} else { | } else { | ||||
if($model->load(Yii::$app->request->post())) { | |||||
Yii::$app->getSession()->setFlash('error', 'Le formulaire comporte des erreurs.'); | |||||
} | |||||
return $this->render('update', [ | return $this->render('update', [ | ||||
'model' => $model, | 'model' => $model, | ||||
]); | ]); |
<div id="orders" class="panel panel-default" v-if="date"> | <div id="orders" class="panel panel-default" v-if="date"> | ||||
<div class="panel-heading"> | <div class="panel-heading"> | ||||
<h3 class="panel-title">Commandes <label class="label label-success" v-if="orders.length">{{ orders.length }}</label><label class="label label-danger" v-else>0</label></h3> | <h3 class="panel-title">Commandes <label class="label label-success" v-if="orders.length">{{ orders.length }}</label><label class="label label-danger" v-else>0</label></h3> | ||||
<div class="buttons"> | |||||
<button id="btn-add-order" @click="showModalFormOrderCreate = true" class="btn btn-primary btn-xs"><span class="glyphicon glyphicon-plus"></span> Ajouter une commande</button> | |||||
<button id="btn-add-subscriptions" @click="addSubscriptions" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-plus"></span> Importer les abonnements</button> | |||||
<template v-if="producer.tiller == true"> | |||||
<button v-if="tillerIsSynchro" id="btn-tiller" class="btn btn-xs btn-success" disabled><span class="glyphicon glyphicon-refresh"></span> Synchronisé avec Tiller</button> | |||||
<button v-else id="btn-tiller" class="btn btn-xs btn-default" @click="synchroTiller"><span class="glyphicon glyphicon-refresh"></span> Synchroniser avec Tiller</button> | |||||
</template> | |||||
</div> | |||||
</div> | </div> | ||||
<div class="panel-body"> | <div class="panel-body"> | ||||
<button id="btn-add-subscriptions" @click="addSubscriptions" class="btn btn-default btn-xs"><span class="glyphicon glyphicon-plus"></span> Importer les abonnements</button> | |||||
<button id="btn-add-order" @click="showModalFormOrderCreate = true" class="btn btn-primary btn-xs"><span class="glyphicon glyphicon-plus"></span> Ajouter une commande</button> | |||||
<order-form | <order-form | ||||
v-if="showModalFormOrderCreate" | v-if="showModalFormOrderCreate" | ||||
:date="date" | :date="date" | ||||
</div> | </div> | ||||
<div class="col-md-4"> | <div class="col-md-4"> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
<a v-if="producer.credit && order.id_user > 0" class="btn btn-xs btn-primary btn-credit" :href="baseUrl+'/user/credit?id='+user.id_user" v-for="user in users" v-if="user.id_user == order.id_user">{{ parseFloat(user.credit).toFixed(2).replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }}</a> | |||||
<a v-if="producer.credit && order.id_user > 0 && user.id_user == order.id_user" class="btn btn-xs btn-primary btn-credit" :href="baseUrl+'/user/credit?id='+user.id_user" v-for="user in users">{{ parseFloat(user.credit).toFixed(2).replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }}</a> | |||||
<label class="control-label" for="select-id-user"> | <label class="control-label" for="select-id-user"> | ||||
Utilisateur | Utilisateur | ||||
</label> | </label> |
</div> | </div> | ||||
<div class="user-form"> | <div class="user-form"> | ||||
<?php $form = ActiveForm::begin(); ?> | |||||
<?php $form = ActiveForm::begin([ | |||||
'enableClientValidation' => false, | |||||
]); ?> | |||||
<div> | <div> | ||||
<div v-show="currentSection == 'general'" class="panel panel-default"> | <div v-show="currentSection == 'general'" class="panel panel-default"> | ||||
<div class="panel-heading"> | <div class="panel-heading"> | ||||
->hint('') ?> | ->hint('') ?> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div v-show="currentSection == 'logiciels-caisse'" class="panel panel-default"> | |||||
<div class="panel-heading"> | |||||
<h3 class="panel-title">Logiciels de caisse</h3> | |||||
</div> | |||||
<div class="panel-body"> | |||||
<?= $form->field($model, 'tiller') | |||||
->dropDownList([ | |||||
0 => 'Non', | |||||
1 => 'Oui' | |||||
], []) | |||||
->label('Synchroniser avec Tiller'); ?> | |||||
<?= $form->field($model, 'tiller_provider_token') ; ?> | |||||
<?= $form->field($model, 'tiller_restaurant_token') ; ?> | |||||
</div> | |||||
</div> | |||||
<div class="form-group"> | <div class="form-group"> | ||||
<?= Html::submitButton('Mettre à jour', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | <?= Html::submitButton('Mettre à jour', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> |
.distribution-index #orders { | .distribution-index #orders { | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 167, ../sass/distribution/_index.scss */ | |||||
.distribution-index #orders #btn-add-order { | |||||
position: absolute; | |||||
top: 9px; | |||||
right: 10px; | |||||
} | |||||
/* line 173, ../sass/distribution/_index.scss */ | |||||
.distribution-index #orders #btn-add-subscriptions { | |||||
position: absolute; | |||||
top: 9px; | |||||
right: 180px; | |||||
/* line 170, ../sass/distribution/_index.scss */ | |||||
.distribution-index #orders .panel-heading .buttons .btn { | |||||
position: relative; | |||||
top: -19px; | |||||
float: right; | |||||
margin-left: 10px; | |||||
} | } | ||||
/* line 179, ../sass/distribution/_index.scss */ | /* line 179, ../sass/distribution/_index.scss */ | ||||
.distribution-index #orders #wrapper-nav-points-sale { | .distribution-index #orders #wrapper-nav-points-sale { |
users: [], | users: [], | ||||
showModalProducts: false, | showModalProducts: false, | ||||
showModalPointsSale: false, | showModalPointsSale: false, | ||||
showModalFormOrderCreate: false, | showModalFormOrderCreate: false, | ||||
orderCreate: null, | orderCreate: null, | ||||
showModalFormOrderUpdate: false, | showModalFormOrderUpdate: false, | ||||
idOrderUpdate: 0, | idOrderUpdate: 0, | ||||
showViewProduct: false, | showViewProduct: false, | ||||
idOrderView: 0, | idOrderView: 0, | ||||
showModalPayment: false, | showModalPayment: false, | ||||
idOrderPayment: 0, | idOrderPayment: 0, | ||||
showLoading: false, | showLoading: false, | ||||
tillerIsSynchro: false, | |||||
calendar: { | calendar: { | ||||
mode: 'single', | mode: 'single', | ||||
attrs: [], | attrs: [], | ||||
app.users = response.data.users ; | app.users = response.data.users ; | ||||
} | } | ||||
app.tillerIsSynchro = response.data.tiller_is_synchro ; | |||||
app.calendar.attrs = [] ; | app.calendar.attrs = [] ; | ||||
var distributions = response.data.distributions ; | var distributions = response.data.distributions ; | ||||
if(distributions.length) { | if(distributions.length) { | ||||
.then(function(response) { | .then(function(response) { | ||||
app.init(app.idActivePointSale) ; | app.init(app.idActivePointSale) ; | ||||
}) ; | }) ; | ||||
}, | |||||
synchroTiller: function() { | |||||
var app = this ; | |||||
this.showLoading = true ; | |||||
axios.get(UrlManager.getBaseUrlAbsolute()+"distribution/ajax-process-synchro-tiller",{params: { | |||||
date: this.getDate() | |||||
}}) | |||||
.then(function(response) { | |||||
app.init(app.idActivePointSale) ; | |||||
}) ; | |||||
} | } | ||||
}, | }, | ||||
}); | }); | ||||
idUser: 0, | idUser: 0, | ||||
username : '', | username : '', | ||||
comment: '', | comment: '', | ||||
producer: null, | |||||
baseUrl: $('meta[name=baseurl]').attr('content'), | baseUrl: $('meta[name=baseurl]').attr('content'), | ||||
} ; | } ; | ||||
}, | }, | ||||
if(!countProducts) { | if(!countProducts) { | ||||
this.errors.push('Veuillez sélectionner au moins un produit') ; | this.errors.push('Veuillez sélectionner au moins un produit') ; | ||||
} | } | ||||
console.log('id_user : '+this.order.id_user+' / username : '+this.order.username) ; | |||||
}, | }, | ||||
submitFormCreate: function(event) { | submitFormCreate: function(event) { | ||||
var app = this ; | var app = this ; |
{ | { | ||||
name: 'infos', | name: 'infos', | ||||
nameDisplay: 'Informations légales' | nameDisplay: 'Informations légales' | ||||
}, | |||||
{ | |||||
name: 'logiciels-caisse', | |||||
nameDisplay: 'Logiciels de caisse' | |||||
} | } | ||||
] | ] | ||||
}, | }, |
#orders { | #orders { | ||||
position: relative ; | position: relative ; | ||||
#btn-add-order { | |||||
position: absolute ; | |||||
top: 9px ; | |||||
right: 10px ; | |||||
} | |||||
#btn-add-subscriptions { | |||||
position: absolute ; | |||||
top: 9px ; | |||||
right: 180px ; | |||||
.panel-heading { | |||||
.buttons { | |||||
.btn { | |||||
position: relative ; | |||||
top: -19px ; | |||||
float: right ; | |||||
margin-left: 10px ; | |||||
} | |||||
} | |||||
} | } | ||||
#wrapper-nav-points-sale { | #wrapper-nav-points-sale { |
<?php | |||||
/** | |||||
Copyright distrib (2018) | |||||
contact@opendistrib.net | |||||
Ce logiciel est un programme informatique servant à aider les producteurs | |||||
à distribuer leur production en circuits courts. | |||||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||||
sur le site "http://www.cecill.info". | |||||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||||
de modification et de redistribution accordés par cette licence, il n'est | |||||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||||
titulaire des droits patrimoniaux et les concédants successifs. | |||||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||||
associés au chargement, à l'utilisation, à la modification et/ou au | |||||
développement et à la reproduction du logiciel par l'utilisateur étant | |||||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||||
avertis possédant des connaissances informatiques approfondies. Les | |||||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||||
termes. | |||||
*/ | |||||
namespace common\helpers; | |||||
use linslin\yii2\curl; | |||||
class Tiller | |||||
{ | |||||
var $curl ; | |||||
var $producer_tiller ; | |||||
var $provider_token ; | |||||
var $restaurant_token ; | |||||
var $url_api = 'https://developers.tillersystems.com/api/' ; | |||||
public function __construct() | |||||
{ | |||||
$this->curl = new curl\Curl(); | |||||
$this->producer_tiller = Producer::getConfig('tiller') ; | |||||
$this->provider_token = Producer::getConfig('tiller_provider_token') ; | |||||
$this->restaurant_token = Producer::getConfig('tiller_restaurant_token') ; | |||||
} | |||||
public function getOrders($date) | |||||
{ | |||||
if($this->producer_tiller) { | |||||
$orders = $this->curl->setGetParams([ | |||||
'provider_token' => $this->provider_token, | |||||
'restaurant_token' => $this->restaurant_token, | |||||
'dateFrom' => date('Y-m-d H-i-s', strtotime($date)), | |||||
'dateTo' => date('Y-m-d H-i-s', strtotime($date) + 24*60*60 - 1), | |||||
'status' => 'CLOSED', | |||||
])->get($this->url_api.'orders'); | |||||
return json_decode($orders) ; | |||||
} | |||||
} | |||||
public function isSynchro($date) | |||||
{ | |||||
if($this->producer_tiller) { | |||||
$ordersTiller = $this->getOrders($date) ; | |||||
$ordersOpendistrib = Order::searchAll([ | |||||
'distribution.date' => $date | |||||
]) ; | |||||
$ordersOpendistribSynchro = [] ; | |||||
if($ordersOpendistrib) { | |||||
foreach($ordersOpendistrib as $orderOpendistrib) { | |||||
$ordersOpendistribSynchro[$orderOpendistrib->id] = false ; | |||||
foreach($ordersTiller->orders as $orderTiller) { | |||||
if($orderOpendistrib->id == $orderTiller->externalId | |||||
&& ($orderOpendistrib->getAmount(Order::AMOUNT_TOTAL) * 100) == $orderTiller->currentBill) { | |||||
$ordersOpendistribSynchro[$orderOpendistrib->id] = true ; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
foreach($ordersOpendistribSynchro as $idOrder => $isSynchro) { | |||||
if(!$isSynchro) { | |||||
return false ; | |||||
} | |||||
} | |||||
return true ; | |||||
} | |||||
} | |||||
public function postOrder($params) | |||||
{ | |||||
if($this->producer_tiller) { | |||||
return $this->curl->setPostParams(array_merge([ | |||||
'provider_token' => $this->provider_token, | |||||
'restaurant_token' => $this->restaurant_token, | |||||
], $params)) | |||||
->post($this->url_api.'orders') ; | |||||
} | |||||
} | |||||
} |
{ | { | ||||
return [ | return [ | ||||
[['name','type'], 'required'], | [['name','type'], 'required'], | ||||
[['tiller_provider_token','tiller_restaurant_token'], 'required', 'when' => function($model) { | |||||
return $model->tiller == true ; | |||||
}], | |||||
[['order_deadline', 'order_delay'], 'integer'], | [['order_deadline', 'order_delay'], 'integer'], | ||||
['order_deadline', 'in', 'range' => [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]], | ['order_deadline', 'in', 'range' => [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]], | ||||
['order_delay', 'in', 'range' => [1, 2, 3, 4, 5, 6, 7]], | ['order_delay', 'in', 'range' => [1, 2, 3, 4, 5, 6, 7]], | ||||
$this->addError($attribute, 'Ce code est déjà utilisé par un autre producteur.'); | $this->addError($attribute, 'Ce code est déjà utilisé par un autre producteur.'); | ||||
} | } | ||||
}], | }], | ||||
[['description','mentions','gcs','order_infos','slug','secret_key_payplug','background_color_logo','option_behavior_cancel_order'], 'string'], | |||||
[['negative_balance', 'credit', 'active','online_payment','user_manage_subscription', 'option_allow_user_gift','use_credit_checked_default'], 'boolean'], | |||||
[['description','mentions','gcs','order_infos','slug','secret_key_payplug','background_color_logo','option_behavior_cancel_order','tiller_provider_token','tiller_restaurant_token'], 'string'], | |||||
[['negative_balance', 'credit', 'active','online_payment','user_manage_subscription', 'option_allow_user_gift','use_credit_checked_default','tiller'], 'boolean'], | |||||
[['name', 'siret', 'logo', 'photo', 'postcode', 'city', 'code','type','credit_functioning','option_behavior_cancel_order'], 'string', 'max' => 255], | [['name', 'siret', 'logo', 'photo', 'postcode', 'city', 'code','type','credit_functioning','option_behavior_cancel_order'], 'string', 'max' => 255], | ||||
[['free_price', 'credit_limit_reminder','credit_limit'], 'double'], | [['free_price', 'credit_limit_reminder','credit_limit'], 'double'], | ||||
['free_price', 'compare', 'compareValue' => 0, 'operator' => '>=', 'type' => 'number', 'message' => 'Prix libre doit être supérieur ou égal à 0'], | ['free_price', 'compare', 'compareValue' => 0, 'operator' => '>=', 'type' => 'number', 'message' => 'Prix libre doit être supérieur ou égal à 0'], | ||||
'use_credit_checked_default' => 'Cocher par défaut l\'option "Utiliser mon crédit" lors de la commande de l\'utilisateur', | 'use_credit_checked_default' => 'Cocher par défaut l\'option "Utiliser mon crédit" lors de la commande de l\'utilisateur', | ||||
'background_color_logo' => 'Couleur de fond du logo', | 'background_color_logo' => 'Couleur de fond du logo', | ||||
'option_behavior_cancel_order' => 'Comportement lors de la suppression d\'une commande', | 'option_behavior_cancel_order' => 'Comportement lors de la suppression d\'une commande', | ||||
'tiller' => 'Tiller', | |||||
'tiller_provider_token' => 'Token provider', | |||||
'tiller_restaurant_token' => 'Token restaurant', | |||||
]; | ]; | ||||
} | } | ||||
"yurkinx/yii2-image": "dev-master", | "yurkinx/yii2-image": "dev-master", | ||||
"dmstr/yii2-adminlte-asset": "^2.1", | "dmstr/yii2-adminlte-asset": "^2.1", | ||||
"payplug/payplug-php": "^2.5", | "payplug/payplug-php": "^2.5", | ||||
"mailjet/mailjet-apiv3-php": "^1.4" | |||||
"mailjet/mailjet-apiv3-php": "^1.4", | |||||
"linslin/yii2-curl": "*" | |||||
}, | }, | ||||
"require-dev": { | "require-dev": { | ||||
"yiisoft/yii2-codeception": "*", | "yiisoft/yii2-codeception": "*", |
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", | ||||
"This file is @generated automatically" | "This file is @generated automatically" | ||||
], | ], | ||||
"hash": "2a564b71f3dac99e36518f58a67f4245", | |||||
"content-hash": "49af3d5f9b5f0cb2ef34661e33f27903", | |||||
"hash": "8cb0b3a549f436550d88d1d127bba13c", | |||||
"content-hash": "d61ba662c69c68021c4ffa9989d25774", | |||||
"packages": [ | "packages": [ | ||||
{ | { | ||||
"name": "2amigos/yii2-chartjs-widget", | "name": "2amigos/yii2-chartjs-widget", | ||||
"version": "v2.4.8", | "version": "v2.4.8", | ||||
"source": { | "source": { | ||||
"type": "git", | "type": "git", | ||||
"url": "https://github.com/almasaeed2010/AdminLTE.git", | |||||
"url": "https://github.com/ColorlibHQ/AdminLTE.git", | |||||
"reference": "d9e68301848a95dff2e2dbef6569e617a9b3fa30" | "reference": "d9e68301848a95dff2e2dbef6569e617a9b3fa30" | ||||
}, | }, | ||||
"dist": { | "dist": { | ||||
"type": "zip", | "type": "zip", | ||||
"url": "https://api.github.com/repos/almasaeed2010/AdminLTE/zipball/d9e68301848a95dff2e2dbef6569e617a9b3fa30", | |||||
"url": "https://api.github.com/repos/ColorlibHQ/AdminLTE/zipball/d9e68301848a95dff2e2dbef6569e617a9b3fa30", | |||||
"reference": "d9e68301848a95dff2e2dbef6569e617a9b3fa30", | "reference": "d9e68301848a95dff2e2dbef6569e617a9b3fa30", | ||||
"shasum": "" | "shasum": "" | ||||
}, | }, | ||||
}, | }, | ||||
"dist": { | "dist": { | ||||
"type": "zip", | "type": "zip", | ||||
"url": "https://api.github.com/repos/kartik-v/yii2-mpdf/zipball/beecfa00d5debfef1ccac6ff7b1abe8560b6ffd1", | |||||
"url": "https://api.github.com/repos/kartik-v/yii2-mpdf/zipball/e513d17e8b1a5e063475f332e726845dba8f32b5", | |||||
"reference": "17fda1cb084c58fee6014026d35af5faf73316ef", | "reference": "17fda1cb084c58fee6014026d35af5faf73316ef", | ||||
"shasum": "" | "shasum": "" | ||||
}, | }, | ||||
], | ], | ||||
"time": "2017-01-14 11:51:12" | "time": "2017-01-14 11:51:12" | ||||
}, | }, | ||||
{ | |||||
"name": "linslin/yii2-curl", | |||||
"version": "1.3.0", | |||||
"source": { | |||||
"type": "git", | |||||
"url": "https://github.com/linslin/Yii2-Curl.git", | |||||
"reference": "734c40b520729c79af2937283864f8c999e86879" | |||||
}, | |||||
"dist": { | |||||
"type": "zip", | |||||
"url": "https://api.github.com/repos/linslin/Yii2-Curl/zipball/734c40b520729c79af2937283864f8c999e86879", | |||||
"reference": "734c40b520729c79af2937283864f8c999e86879", | |||||
"shasum": "" | |||||
}, | |||||
"require": { | |||||
"ext-curl": "*", | |||||
"ext-json": "*", | |||||
"yiisoft/yii2": "*" | |||||
}, | |||||
"require-dev": { | |||||
"codeception/base": "^2.2.3", | |||||
"codeception/specify": "~0.4.3", | |||||
"codeception/verify": "~0.3.1", | |||||
"codeclimate/php-test-reporter": "dev-master", | |||||
"guzzlehttp/guzzle": ">=4.1.4 <7.0", | |||||
"mcustiel/phiremock-codeception-extension": "1.2.4" | |||||
}, | |||||
"type": "yii2-extension", | |||||
"autoload": { | |||||
"psr-4": { | |||||
"linslin\\yii2\\curl\\": "" | |||||
} | |||||
}, | |||||
"notification-url": "https://packagist.org/downloads/", | |||||
"license": [ | |||||
"MIT" | |||||
], | |||||
"authors": [ | |||||
{ | |||||
"name": "Nils Gajsek", | |||||
"email": "info@linslin.org" | |||||
} | |||||
], | |||||
"description": "Easy and nice cURL extension with RESTful support for Yii2", | |||||
"keywords": [ | |||||
" curl", | |||||
"extension", | |||||
"restful", | |||||
"yii2" | |||||
], | |||||
"time": "2019-02-25 10:56:34" | |||||
}, | |||||
{ | { | ||||
"name": "mailjet/mailjet-apiv3-php", | "name": "mailjet/mailjet-apiv3-php", | ||||
"version": "v1.4.1", | "version": "v1.4.1", |
<?php | |||||
use yii\db\Migration; | |||||
use yii\db\mysql\Schema; | |||||
class m191218_142414_tiller extends Migration | |||||
{ | |||||
public function up() | |||||
{ | |||||
$this->addColumn('producer', 'tiller', Schema::TYPE_BOOLEAN) ; | |||||
$this->addColumn('producer', 'tiller_provider_token', Schema::TYPE_STRING) ; | |||||
$this->addColumn('producer', 'tiller_restaurant_token', Schema::TYPE_STRING) ; | |||||
} | |||||
public function down() | |||||
{ | |||||
$this->dropColumn('producer', 'tiller') ; | |||||
$this->dropColumn('producer', 'tiller_provider_token') ; | |||||
$this->dropColumn('producer', 'tiller_restaurant_token') ; | |||||
} | |||||
} |
'yii\\' => array($vendorDir . '/yiisoft/yii2'), | 'yii\\' => array($vendorDir . '/yiisoft/yii2'), | ||||
'rmrevin\\yii\\fontawesome\\' => array($vendorDir . '/rmrevin/yii2-fontawesome'), | 'rmrevin\\yii\\fontawesome\\' => array($vendorDir . '/rmrevin/yii2-fontawesome'), | ||||
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'), | 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'), | ||||
'linslin\\yii2\\curl\\' => array($vendorDir . '/linslin/yii2-curl'), | |||||
'kartik\\mpdf\\' => array($vendorDir . '/kartik-v/yii2-mpdf'), | 'kartik\\mpdf\\' => array($vendorDir . '/kartik-v/yii2-mpdf'), | ||||
'dosamigos\\leaflet\\' => array($vendorDir . '/2amigos/yii2-leaflet-extension/src'), | 'dosamigos\\leaflet\\' => array($vendorDir . '/2amigos/yii2-leaflet-extension/src'), | ||||
'dosamigos\\chartjs\\' => array($vendorDir . '/2amigos/yii2-chartjs-widget/src'), | 'dosamigos\\chartjs\\' => array($vendorDir . '/2amigos/yii2-chartjs-widget/src'), |
}, | }, | ||||
"dist": { | "dist": { | ||||
"type": "zip", | "type": "zip", | ||||
"url": "https://api.github.com/repos/kartik-v/yii2-mpdf/zipball/beecfa00d5debfef1ccac6ff7b1abe8560b6ffd1", | |||||
"url": "https://api.github.com/repos/kartik-v/yii2-mpdf/zipball/e513d17e8b1a5e063475f332e726845dba8f32b5", | |||||
"reference": "17fda1cb084c58fee6014026d35af5faf73316ef", | "reference": "17fda1cb084c58fee6014026d35af5faf73316ef", | ||||
"shasum": "" | "shasum": "" | ||||
}, | }, | ||||
"version_normalized": "2.4.8.0", | "version_normalized": "2.4.8.0", | ||||
"source": { | "source": { | ||||
"type": "git", | "type": "git", | ||||
"url": "https://github.com/almasaeed2010/AdminLTE.git", | |||||
"url": "https://github.com/ColorlibHQ/AdminLTE.git", | |||||
"reference": "d9e68301848a95dff2e2dbef6569e617a9b3fa30" | "reference": "d9e68301848a95dff2e2dbef6569e617a9b3fa30" | ||||
}, | }, | ||||
"dist": { | "dist": { | ||||
"type": "zip", | "type": "zip", | ||||
"url": "https://api.github.com/repos/almasaeed2010/AdminLTE/zipball/d9e68301848a95dff2e2dbef6569e617a9b3fa30", | |||||
"url": "https://api.github.com/repos/ColorlibHQ/AdminLTE/zipball/d9e68301848a95dff2e2dbef6569e617a9b3fa30", | |||||
"reference": "d9e68301848a95dff2e2dbef6569e617a9b3fa30", | "reference": "d9e68301848a95dff2e2dbef6569e617a9b3fa30", | ||||
"shasum": "" | "shasum": "" | ||||
}, | }, | ||||
"php", | "php", | ||||
"v3" | "v3" | ||||
] | ] | ||||
}, | |||||
{ | |||||
"name": "linslin/yii2-curl", | |||||
"version": "1.3.0", | |||||
"version_normalized": "1.3.0.0", | |||||
"source": { | |||||
"type": "git", | |||||
"url": "https://github.com/linslin/Yii2-Curl.git", | |||||
"reference": "734c40b520729c79af2937283864f8c999e86879" | |||||
}, | |||||
"dist": { | |||||
"type": "zip", | |||||
"url": "https://api.github.com/repos/linslin/Yii2-Curl/zipball/734c40b520729c79af2937283864f8c999e86879", | |||||
"reference": "734c40b520729c79af2937283864f8c999e86879", | |||||
"shasum": "" | |||||
}, | |||||
"require": { | |||||
"ext-curl": "*", | |||||
"ext-json": "*", | |||||
"yiisoft/yii2": "*" | |||||
}, | |||||
"require-dev": { | |||||
"codeception/base": "^2.2.3", | |||||
"codeception/specify": "~0.4.3", | |||||
"codeception/verify": "~0.3.1", | |||||
"codeclimate/php-test-reporter": "dev-master", | |||||
"guzzlehttp/guzzle": ">=4.1.4 <7.0", | |||||
"mcustiel/phiremock-codeception-extension": "1.2.4" | |||||
}, | |||||
"time": "2019-02-25 10:56:34", | |||||
"type": "yii2-extension", | |||||
"installation-source": "dist", | |||||
"autoload": { | |||||
"psr-4": { | |||||
"linslin\\yii2\\curl\\": "" | |||||
} | |||||
}, | |||||
"notification-url": "https://packagist.org/downloads/", | |||||
"license": [ | |||||
"MIT" | |||||
], | |||||
"authors": [ | |||||
{ | |||||
"name": "Nils Gajsek", | |||||
"email": "info@linslin.org" | |||||
} | |||||
], | |||||
"description": "Easy and nice cURL extension with RESTful support for Yii2", | |||||
"keywords": [ | |||||
" curl", | |||||
"extension", | |||||
"restful", | |||||
"yii2" | |||||
] | |||||
} | } | ||||
] | ] |
'@dmstr' => $vendorDir . '/dmstr/yii2-adminlte-asset', | '@dmstr' => $vendorDir . '/dmstr/yii2-adminlte-asset', | ||||
), | ), | ||||
), | ), | ||||
'linslin/yii2-curl' => | |||||
array ( | |||||
'name' => 'linslin/yii2-curl', | |||||
'version' => '1.3.0.0', | |||||
'alias' => | |||||
array ( | |||||
'@linslin/yii2/curl' => $vendorDir . '/linslin/yii2-curl', | |||||
), | |||||
), | |||||
); | ); |