Fix: vente de service avec quantité

This commit is contained in:
Vincent Vandemeulebrouck 2022-12-30 02:28:17 +01:00
parent 84f4a152a8
commit 2546b89b44
4 changed files with 8 additions and 6 deletions

View File

@ -3776,7 +3776,7 @@ export class RdDActor extends Actor {
const vente = achat.vente; const vente = achat.vente;
const quantite = (achat.choix.nombreLots ?? 1) * (vente.tailleLot); const quantite = (achat.choix.nombreLots ?? 1) * (vente.tailleLot);
const itemVendu = vendeur?.getObjet(vente.item._id) ?? (await RdDItem.getCorrespondingItem(vente.item)); const itemVendu = vendeur?.getObjet(vente.item._id) ?? (await RdDItem.getCorrespondingItem(vente.item));
if (!this.verifierQuantite(service, vendeur, itemVendu, quantite)) { if (!this.verifierQuantite(service, vente.serviceSubItem, vendeur, itemVendu, quantite)) {
ChatUtility.notifyUser(achat.userId, 'warn', `Le vendeur n'a pas assez de ${itemVendu.name} !`); ChatUtility.notifyUser(achat.userId, 'warn', `Le vendeur n'a pas assez de ${itemVendu.name} !`);
return return
} }
@ -3828,8 +3828,8 @@ export class RdDActor extends Actor {
} }
} }
verifierQuantite(service, vendeur, item, quantiteTotal) { verifierQuantite(service, serviceSubItem, vendeur, item, quantiteTotal) {
const disponible = service ? service.getQuantiteDisponible(item, quantiteTotal) : (vendeur ? (item?.getQuantite() ?? 0) : quantiteTotal); const disponible = service ? service.getQuantiteDisponible(serviceSubItem, quantiteTotal) : (vendeur ? (item?.getQuantite() ?? 0) : quantiteTotal);
return disponible >= quantiteTotal; return disponible >= quantiteTotal;
} }

View File

@ -30,13 +30,14 @@ export class DialogItemAchat extends Dialog {
} }
static async onAcheter({ item, vendeur, acheteur, service, tailleLot, prixLot, nbLots, quantiteIllimite, chatMessageIdVente }) { static async onAcheter({ item, vendeur, acheteur, service, serviceSubItem, tailleLot, prixLot, nbLots, quantiteIllimite, chatMessageIdVente }) {
const venteData = { const venteData = {
item, item,
actingUserId: game.user.id, actingUserId: game.user.id,
vendeurId: vendeur?.id, vendeurId: vendeur?.id,
vendeur, vendeur,
acheteur, acheteur,
serviceSubItem: serviceSubItem,
service, service,
tailleLot, tailleLot,
quantiteIllimite, quantiteIllimite,

View File

@ -23,7 +23,7 @@ export class RdDItemService extends RdDItem {
getProprietes() { return []; } getProprietes() { return []; }
getServiceItem(itemRef) { getServiceItem(itemRef) {
if (this.isService()) { if (itemRef && this.isService()) {
return this.system.items.find(it => it.id == itemRef.id && it.pack == itemRef.pack); return this.system.items.find(it => it.id == itemRef.id && it.pack == itemRef.pack);
} }
return undefined; return undefined;
@ -64,6 +64,7 @@ export class RdDItemService extends RdDItem {
await DialogItemAchat.onAcheter({ await DialogItemAchat.onAcheter({
item: await RdDItem.getCorrespondingItem(subItem), item: await RdDItem.getCorrespondingItem(subItem),
acheteur, acheteur,
serviceSubItem: subItem,
service: this, service: this,
quantiteIllimite: this.system.illimite, quantiteIllimite: this.system.illimite,
nbLots, nbLots,

View File

@ -428,7 +428,7 @@ export class RdDItem extends Item {
} }
await DialogItemVente.display({ await DialogItemVente.display({
item: this, item: this,
service, service: service,
quantiteMax, quantiteMax,
callback: async (vente) => { callback: async (vente) => {
vente["properties"] = this.getProprietes(); vente["properties"] = this.getProprietes();