Fix: vente depuis un commerce

La quantité proposée est limitée à la quantité disponible
ou illimité si le commerce est illimité
This commit is contained in:
Vincent Vandemeulebrouck 2023-01-03 23:46:08 +01:00
parent 39d14c8496
commit 8e0825b6b9
3 changed files with 18 additions and 11 deletions

View File

@ -4,7 +4,7 @@ export class DialogItemVente extends Dialog {
static async display({ item, callback, quantiteMax = undefined }) { static async display({ item, callback, quantiteMax = undefined }) {
const quantite = quantiteMax ?? item.getQuantite() ?? 1; const quantite = quantiteMax ?? item.getQuantite() ?? 1;
const isOwned = item.isOwned; const isOwned = item.parent;
const venteData = { const venteData = {
item: item, item: item,
alias: item.actor?.name ?? game.user.name, alias: item.actor?.name ?? game.user.name,
@ -16,7 +16,7 @@ export class DialogItemVente extends Dialog {
quantiteNbLots: quantite, quantiteNbLots: quantite,
quantiteMaxLots: quantite, quantiteMaxLots: quantite,
quantiteMax: quantite, quantiteMax: quantite,
quantiteIllimite: !isOwned || quantiteMax == undefined, quantiteIllimite: item.isItemCommerce() ? quantiteMax == undefined : !isOwned,
isOwned: isOwned, isOwned: isOwned,
}; };
const html = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/dialog-item-vente.html`, venteData); const html = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/dialog-item-vente.html`, venteData);
@ -41,8 +41,7 @@ export class DialogItemVente extends Dialog {
activateListeners(html) { activateListeners(html) {
super.activateListeners(html); super.activateListeners(html);
this.html = html; this.html = html;
HtmlUtility._showControlWhen(this.html.find(".quantiteNbLots"), !this.venteData.quantiteIllimite) this.setQuantiteIllimite(this.venteData.quantiteIllimite);
this.html.find(".tailleLot").change(event => this.setTailleLot(Number(event.currentTarget.value))); this.html.find(".tailleLot").change(event => this.setTailleLot(Number(event.currentTarget.value)));
this.html.find(".quantiteNbLots").change(event => this.setNbLots(Number(event.currentTarget.value))); this.html.find(".quantiteNbLots").change(event => this.setNbLots(Number(event.currentTarget.value)));
this.html.find(".quantiteIllimite").change(event => this.setQuantiteIllimite(event.currentTarget.checked)); this.html.find(".quantiteIllimite").change(event => this.setQuantiteIllimite(event.currentTarget.checked));

View File

@ -259,8 +259,12 @@ export class RdDItem extends Item {
return this.system.cout ?? 0 return this.system.cout ?? 0
} }
isItemCommerce() {
return this.parent?.type == 'commerce';
}
calculerPrixCommercant() { calculerPrixCommercant() {
if (this.parent?.type == 'commerce') { if (this.isItemCommerce()) {
// appliquer le pourcentage // appliquer le pourcentage
return this.parent.calculerPrix(this); return this.parent.calculerPrix(this);
} }

View File

@ -2,19 +2,21 @@
<img class="chat-icon" src="{{item.img}}" title="{{item.name}}" alt="{{item.name}}" /> <img class="chat-icon" src="{{item.img}}" title="{{item.name}}" alt="{{item.name}}" />
<h4>{{item.name}}</h4> <h4>{{item.name}}</h4>
<div class="flexcol"> <div class="flexcol">
{{#if isOwned}}
<div class="flexrow flex-group-left"> <div class="flexrow flex-group-left">
{{#if quantiteIllimite}}
<label>Quantité illimitée</label>
{{else}}
<label>Quantité disponible</label> <label>Quantité disponible</label>
<label>{{quantiteMax}}</label> <label>{{quantiteMax}}</label>
{{/if}}
</div> </div>
{{/if}}
<div class="flexrow flex-group-left"> <div class="flexrow flex-group-left">
<label>Nombre de lots</label> <label>Nombre de lots</label>
<div class="flexrow"> <div class="flexrow">
{{#unless isOwned}} {{#unless isOwned}}
<input name="quantiteIllimite" class="quantiteIllimite flex-shrink" type="checkbox" {{#if <input name="quantiteIllimite" class="quantiteIllimite flex-shrink" type="checkbox" {{#if
quantiteIllimite}}checked{{/if}} /> quantiteIllimite}}checked{{/if}} />
<label class="label-quantiteIllimite flex-shrink">Illimités</label> <label class="label-quantiteIllimite flex-shrink">disponibles</label>
{{/unless}} {{/unless}}
<input name="quantiteNbLots" class="quantiteNbLots flex-shrink number-x2" type="number" min="1" <input name="quantiteNbLots" class="quantiteNbLots flex-shrink number-x2" type="number" min="1"
max="{{quantiteMaxLots}}" value="{{quantiteNbLots}}" data-dtype="Number" /> max="{{quantiteMaxLots}}" value="{{quantiteNbLots}}" data-dtype="Number" />
@ -22,8 +24,10 @@
</div> </div>
<div class="flexrow flex-group-left"> <div class="flexrow flex-group-left">
<label for="tailleLot">Taille d'un lot</label> <label for="tailleLot">Taille d'un lot</label>
<input name="tailleLot" class="tailleLot flex-shrink number-x2" type="number" min="1" <span class="flexrow">
max="{{quantiteMax}}" value="{{tailleLot}}" data-dtype="Number" /> <input name="tailleLot" class="tailleLot flex-shrink number-x2" type="number" min="1"
max="{{quantiteMax}}" value="{{tailleLot}}" data-dtype="Number" />
</span>
</div> </div>
<div class="flexrow flex-group-left"> <div class="flexrow flex-group-left">
<label>Prix unitaire</label> <label>Prix unitaire</label>
@ -32,7 +36,7 @@
<div class="flexrow flex-group-left"> <div class="flexrow flex-group-left">
<label for="prixLot">Prix du lot</label> <label for="prixLot">Prix du lot</label>
<span class="flexrow"> <span class="flexrow">
<input name="prixLot" class="prixLot flex-shrink" type="number" value="{{numberFormat prixLot decimals=2 sign=false}}" <input name="prixLot" class="prixLot flex-shrink number-x3" type="number" value="{{numberFormat prixLot decimals=2 sign=false}}"
data-dtype="Number" /> data-dtype="Number" />
<label>Sols</label> <label>Sols</label>
</span> </span>