Procházet zdrojové kódy

Prix libre

Ajouter le champs "prix_libre" dans la table "etablissement".

Page facturation : retirer toutes les infos relatives à la commission.
Mettre en place un formulaire pour que le producteur puisse saisir un prix.

Tableau de bord : mettre le prix libre saisi par le client dans le bloc facturation.
Si aucun prix libre n'est saisi, inciter le producteur à le faire via un lien dans le bloc facturation.

Mise à jour des CGS + maj de la page d'accueil et du formulaire d'inscription.
prodstable
keun před 7 roky
rodič
revize
f1438f7964
16 změnil soubory, kde provedl 167 přidání a 86 odebrání
  1. +10
    -1
      backend/controllers/EtablissementController.php
  2. +7
    -27
      backend/views/etablissement-admin/index.php
  3. +37
    -13
      backend/views/etablissement/facturation.php
  4. +1
    -0
      backend/views/layouts/main.php
  5. +12
    -2
      backend/views/site/index.php
  6. binární
      backend/web/.sass-cache/c8fef7d48da4dc7f024edc2b0fada9d8d6de5dac/screen.scssc
  7. +21
    -5
      backend/web/css/screen.css
  8. +20
    -4
      backend/web/sass/screen.scss
  9. +12
    -0
      common/models/Etablissement.php
  10. +1
    -0
      common/models/User.php
  11. +17
    -0
      console/migrations/m170517_073105_add_champs_prix_libre_user.php
  12. +19
    -0
      console/migrations/m170517_084318_correction_champs_prix_libre.php
  13. +4
    -4
      frontend/views/site/_cgv_content.php
  14. +4
    -28
      frontend/views/site/_tarifs_boulanger.php
  15. +1
    -1
      frontend/views/site/index.php
  16. +1
    -1
      frontend/views/site/signup.php

+ 10
- 1
backend/controllers/EtablissementController.php Zobrazit soubor

@@ -89,9 +89,18 @@ class EtablissementController extends BackendController

$etablissement = Etablissement::findOne(Yii::$app->user->identity->id_etablissement) ;
if ($etablissement->load(Yii::$app->request->post()))
{
$etablissement->save() ;
if(!is_null($etablissement->prix_libre))
$alert_prix_libre = true ;
}
return $this->render('facturation', [
'datas_factures' => $datas_factures,
'etablissement' => $etablissement
'etablissement' => $etablissement,
'alert_prix_libre' => (isset($alert_prix_libre)) ? true : false
]);
}

+ 7
- 27
backend/views/etablissement-admin/index.php Zobrazit soubor

@@ -99,39 +99,19 @@ $this->params['breadcrumbs'][] = $this->title;
}
],
[
'attribute' => 'Facture',
'label' => 'Facture mois dernier',
'attribute' => 'Prix libre',
'label' => 'Prix libre',
'format' => 'raw',
'value' => function($model) {
$periode = date('Y-m', strtotime('-1 month')) ;
$ca = $model->getCA($periode) ;
$html = '' ;
$html .= 'CA : '.number_format($ca,2).' €<br />' ;
$montant_facturer = $model->getMontantFacturer($periode, $ca) ;
$facture = $model->getFacture($periode) ;
if($facture)
{
$html .= '<span class="label label-success">Facturé</span> <strong>'.number_format($facture->montant_ht,2).' €</strong>' ;
}
else {
if($montant_facturer == 0) {
$html .= '<span class="label label-default">Gratuit</span>' ;
}
else {
$html .= Html::a('Facturer <strong>'.$model->getMontantFacturer($periode, $ca, true).'</strong>', ['etablissement-admin/facturer','id_etablissement' => $model->id], ['class' => 'btn btn-default']) ;
}
}

return $html ;
if(is_null($model->prix_libre))
return '' ;
else
return $model->getPrixLibre() ;
}
],
[
'attribute' => 'Cours',
'label' => 'Mois en cours',
'label' => 'CA mois en cours',
'format' => 'raw',
'value' => function($model) {

+ 37
- 13
backend/views/etablissement/facturation.php Zobrazit soubor

@@ -4,6 +4,7 @@ use yii\helpers\Html;
use yii\grid\GridView;
use common\models\User ;
use common\models\Etablissement ;
use yii\bootstrap\ActiveForm;

$this->title = 'Facturation';
$this->params['breadcrumbs'][] = 'Administration' ;
@@ -13,21 +14,44 @@ $this->params['breadcrumbs'][] = $this->title;

<h1>Facturation</h1>

<p class="alert alert-warning">Suivez ici l'évolution de votre facture tout au long du mois.<br />
Les factures sont générées au début de chaque mois en fonction du chiffre d'affaire du mois précédent. <br />
&RightArrow; S'il est inférieur à 500€, rien n'est facturé. <br />
&RightArrow; S'il est supérieur à 500€, une commission de 2% du chiffre d'affaire est facturée.</p>
<div id="estimation-facture">
<div class="col-md-6">
<h2>Chiffre d'affaire<br />du mois en cours</h2>
<div class="montant"><span><?= number_format($etablissement->getCA(date('Y-m')), 2); ?> €</span></div>
</div>
<p class="">
Vous seuls savez ce que vous apporte cet outil et dans quelle mesure vous souhaitez le soutenir.<br />
C'est pourquoi le modèle économique est basé sur un prix libre facturé mensuellement.<br />
</p>

<div class="col-md-6">
<?php $montant = $etablissement->getMontantFacturer(date('Y-m'), 0); ?>
<h2>Participation<br /><em>La boîte à pain</em> (2%)</h2>
<div class="montant"><span><?php if($montant): echo number_format($montant,2).' €' ; else: echo 'Gratuit' ; endif; ?></span></div>
<div id="estimation-facture" class="">
<?php if($alert_prix_libre): ?>
<div class="alert alert-success">
Le prix libre a bien été mis à jour.
<?php if($etablissement->prix_libre != 0): ?>
Vos prochaines factures mensuelles auront un montant de <strong><?= number_format(Html::encode($etablissement->prix_libre),2).' € TTC' ; ?></strong>.
<?php endif; ?>
</div>
<?php endif; ?>
<?php $form = ActiveForm::begin([
'layout' => 'horizontal',
'fieldConfig' => [
'template' => "{label}\n{beginWrapper}\n{input}\n{hint}\n{error}\n{endWrapper}",
'horizontalCssClasses' => [
'label' => 'col-sm-2',
],
],
]); ?>
<?= $form->field($etablissement, 'prix_libre')->textInput()->label('Prix libre<br /><span>€ TTC / mois</span>') ?>
<div class="form-group field-user-prix_libre">
<label class="control-label col-sm-2" for=""></label>
<div class="col-sm-6">
<?= Html::submitButton('Valider', ['class' => 'btn btn-primary']) ?>
</div>
</div>

<?php ActiveForm::end(); ?>
<div class="clr"></div>
</div>


+ 1
- 0
backend/views/layouts/main.php Zobrazit soubor

@@ -174,6 +174,7 @@ AppAsset::register($this);
<?= Html::a('Hors-ligne',['etablissement/update']); ?>
</span>
<?php endif; ?>
<div class="clr"></div>
<?php $etat_paiement_etablissement = Yii::$app->user->identity->etatPaiementEtablissement(); ?>

+ 12
- 2
backend/views/site/index.php Zobrazit soubor

@@ -164,7 +164,17 @@ $this->title = 'Tableau de bord';
</h3>
</div>
<div class="panel-body">
<div class="col-md-6 mois-en-cours">
<div class="col-md-12">
<?php if(is_null($etablissement->prix_libre)): ?>
<h2>Prix libre non défini</h2>
<p>Le modèle économique de <em>La boîte à pain</em> est basé sur un système de prix libre. <?= Html::a('En savoir plus',['etablissement/facturation']); ?></p>
<?php else: ?>
<h2><?= $etablissement->getPrixLibre() ?> / mois <?= Html::a('Modifier',['etablissement/facturation'],['class' => 'btn btn-xs btn-primary']) ?></h2>
<?php endif; ?>
</div>
<!--<div class="col-md-6 mois-en-cours">
<h2>Chiffre d'affaire<br />du mois en cours</h2>
<div class="montant"><span><?= number_format($etablissement->getCA(date('Y-m')), 2); ?> €</span></div>
</div>
@@ -174,7 +184,7 @@ $this->title = 'Tableau de bord';
<h2>Participation<br /><em>La boîte à pain</em> (2%)</h2>
<div class="montant"><span><?php if($montant): echo number_format($montant,2).' €' ; else: echo 'Gratuit' ; endif; ?></span></div>
</div>
<div class="clr"></div>
<div class="clr"></div>-->
</div>
</div>
</div>

binární
backend/web/.sass-cache/c8fef7d48da4dc7f024edc2b0fada9d8d6de5dac/screen.scssc Zobrazit soubor


+ 21
- 5
backend/web/css/screen.css Zobrazit soubor

@@ -1131,16 +1131,14 @@ a:hover, a:focus, a:active {
/* facturation */
/* line 1145, ../sass/screen.scss */
#estimation-facture {
text-align: center;
margin-bottom: 30px;
padding-bottom: 20px;
padding: 20px;
background-color: #F9F9F9;
}
/* line 1151, ../sass/screen.scss */
/* line 1149, ../sass/screen.scss */
#estimation-facture h2 {
font-family: "myriadpro-it";
}
/* line 1155, ../sass/screen.scss */
/* line 1153, ../sass/screen.scss */
#estimation-facture .montant span {
font-size: 25px;
color: white;
@@ -1152,3 +1150,21 @@ a:hover, a:focus, a:active {
padding-top: 7px;
font-family: "myriadpro-regular";
}
/* line 1164, ../sass/screen.scss */
#estimation-facture label {
text-transform: uppercase;
font-family: "myriadpro-light";
font-size: 20px;
}
/* line 1169, ../sass/screen.scss */
#estimation-facture label span {
font-size: 16px;
}
/* line 1174, ../sass/screen.scss */
#estimation-facture #etablissement-prix_libre {
width: 100px;
height: 60px;
font-size: 30px;
padding: 10px;
text-align: center;
}

+ 20
- 4
backend/web/sass/screen.scss Zobrazit soubor

@@ -1143,11 +1143,9 @@ a {
/* facturation */

#estimation-facture {
text-align: center ;
margin-bottom: 30px ;
padding-bottom: 20px ;
padding: 20px ;
background-color: #F9F9F9 ;

h2 {
font-family: 'myriadpro-it' ;
}
@@ -1162,4 +1160,22 @@ a {
font-family: 'myriadpro-regular' ;
}
}
label {
text-transform: uppercase ;
font-family: "myriadpro-light" ;
font-size: 20px ;
span {
font-size: 16px ;
}
}
#etablissement-prix_libre {
width: 100px ;
height: 60px ;
font-size: 30px ;
padding: 10px ;
text-align: center ;
}
}

+ 12
- 0
common/models/Etablissement.php Zobrazit soubor

@@ -57,6 +57,10 @@ class Etablissement extends \yii\db\ActiveRecord
[['description'], 'string'],
[['solde_negatif', 'credit_pain','actif'], 'boolean'],
[['nom', 'siret', 'logo', 'photo', 'code_postal', 'ville','code'], 'string', 'max' => 255],
['prix_libre','double'],
['prix_libre','required'],
['prix_libre', 'compare', 'compareValue' => 0, 'operator' => '>=', 'type' => 'number','message' => 'Prix libre doit être supérieur ou égal à 0'],
];
}

@@ -242,4 +246,12 @@ class Etablissement extends \yii\db\ActiveRecord
return false ;
}
public function getPrixLibre()
{
if(!is_null($this->prix_libre))
{
return number_format($this->prix_libre, 2, ',', false).' €' ;
}
}
}

+ 1
- 0
common/models/User.php Zobrazit soubor

@@ -305,6 +305,7 @@ class User extends ActiveRecord implements IdentityInterface
'password_old' => 'Ancien mot de passe',
'password_new' => 'Nouveau mot de passe',
'password_new_confirm' => 'Confirmation du nouveau mot de passe',
'prix_libre' => 'Prix libre',
];
}

+ 17
- 0
console/migrations/m170517_073105_add_champs_prix_libre_user.php Zobrazit soubor

@@ -0,0 +1,17 @@
<?php

use yii\db\Migration;
use yii\db\Schema;

class m170517_073105_add_champs_prix_libre_user extends Migration
{
public function up()
{
$this->addColumn('user', 'prix_libre', Schema::TYPE_FLOAT.' DEFAULT NULL') ;
}

public function down()
{
$this->dropColumn('user', 'prix_libre') ;
}
}

+ 19
- 0
console/migrations/m170517_084318_correction_champs_prix_libre.php Zobrazit soubor

@@ -0,0 +1,19 @@
<?php

use yii\db\Migration;
use yii\db\Schema;

class m170517_084318_correction_champs_prix_libre extends Migration
{
public function up()
{
$this->dropColumn('user', 'prix_libre') ;
$this->addColumn('etablissement', 'prix_libre', Schema::TYPE_FLOAT.' DEFAULT NULL') ;
}

public function down()
{
$this->dropColumn('etablissement', 'prix_libre') ;
}

}

+ 4
- 4
frontend/views/site/_cgv_content.php Zobrazit soubor

@@ -63,10 +63,10 @@

<h2>8. Redevances d'utilisation du Site</h2>
<p>La création d’un compte et l’utilisation de la partie du Site réservée aux Boulangers
implique le paiement mensuel par les Boulangers d’un montant équivalent à deux (2) %
du chiffre d’affaires mensuel réalisé à partir des commandes enregistrées sur le Site.
La Société émettra à l’issue de chaque mois une facture au Boulanger, payable
par virement bancaire, paypal ou par chèque dans les trente (30) jours à compter
implique le paiement mensuel par les Boulangers d'un montant défini par eux-même dans
la section Facturation. Si ce montant est supérieur à 0€, la Société émettra à l’issue
de chaque mois une facture au Boulanger, payable
par virement bancaire ou par chèque dans les trente (30) jours à compter
de la date d’émission de la facture. Tout défaut ou retard de paiement emportera
immédiatement application de pénalités de retard à un taux qui est de trois fois
le taux d’intérêt légal appliqué par la Banque Centrale Européenne (B.C.E) à

+ 4
- 28
frontend/views/site/_tarifs_boulanger.php Zobrazit soubor

@@ -7,34 +7,10 @@
<h4 class="modal-title" id="myModalLabel">Tarifs</h4>
</div>
<div class="modal-body">
<div class="alert alert-warning"><em>La boîte à pain</em> fonctionne grâce à un système de <strong>facturation mensuelle</strong> basée
sur le chiffre d'affaire réalisé à partir des commandes enregistrées sur la plateforme. Fonctionner ainsi permet de faire contribuer chaque
boulangerie à la hauteur de son utilisation de la plateforme.</div>
<table class="table table-bordered">
<thead>
<tr>
<th>Chiffre d'affaire</th>
<th>Prix</th>
</tr>
</thead>
<tbody>
<tr>
<td>&lt; 500 €</td>
<td>
<strong>Gratuit</strong>
<div class="exemple">Cette tranche vous permet de tester le site sans frais.</div>
</td>
</tr>
<tr>
<td>&gt;= 500 €</td>
<td>
<strong>2 %</strong> du chiffre d'affaire TTC<br />
<div class="exemple">Exemple : si pour un mois donné, vous avez comptabilisé <em>2500 € TTC</em> de chiffre d'affaire réalisé sur la plateforme,
vous recevrez une facture d'un montant de <em>50 € TTC</em> pour ce mois.</div>
</td>
</tr>
</tbody>
</table>
<div class="alert alert-warning"><em>La boîte à pain</em> fonctionne grâce à un système de <strong>prix libre</strong>.
Chaque producteur définit lui-même le prix mensuel de son abonnement à la plateforme, selon son intérêt et le soutien qu'il
veut apporter.<br /><br />
Ce montant est modifiable à tout moment dans la section <em>Facturation</em> de l'interface d'administration.</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Fermer</button>

+ 1
- 1
frontend/views/site/index.php Zobrazit soubor

@@ -66,7 +66,7 @@ $this->title = 'Plateforme de réservation de pain';
</ul>
<div class="prix">
<span><a data-toggle="modal" data-target="#modal-tarifs" href="javascript:void(0);">Voir les tarifs</a></span>
<span><a data-toggle="modal" data-target="#modal-tarifs" href="javascript:void(0);">Prix libre</a></span>
</div>
</div>
</div>

+ 1
- 1
frontend/views/site/signup.php Zobrazit soubor

@@ -42,7 +42,7 @@ $this->params['breadcrumbs'][] = $this->title;
<?= $form->field($model, 'siret') ?>
<?= $form->field($model, 'code_postal') ?>
<?= $form->field($model, 'ville') ?>
<?= $form->field($model, 'cgv')->checkbox()->label('J\'accepte les <a class="btn btn-xs btn-default" data-toggle="modal" data-target="#modal-cgv" href="javascript:void(0);">conditions générales de service</a> et les <a class="btn btn-xs btn-default" data-toggle="modal" data-target="#modal-tarifs" href="javascript:void(0);">conditions tarifaires</a>.') ?>
<?= $form->field($model, 'cgv')->checkbox()->label('J\'accepte les <a class="btn btn-xs btn-default" data-toggle="modal" data-target="#modal-cgv" href="javascript:void(0);">conditions générales de service</a> et les <a class="btn btn-xs btn-default" data-toggle="modal" data-target="#modal-tarifs" href="javascript:void(0);">conditions tarifaires</a> (prix libre).') ?>
</div>
<div id="champs-client">
<?= $form->field($model, 'id_etablissement')->dropDownList($data_etablissements_dispos, ['prompt' => '--','encode' => false,'options' => $options_etablissements_dispos]) ?>

Načítá se…
Zrušit
Uložit