Correction vente
- pas de vente à soi même - conserver le vendeur lors de la diminution de la quantité disponible
This commit is contained in:
parent
c4cb3bf60d
commit
27d83cf516
@ -963,15 +963,14 @@ export class RdDActor extends Actor {
|
||||
|
||||
async processDropItem(event, dragData, objetVersConteneur) {
|
||||
console.log("DRAG", this.id, dragData);
|
||||
const droppedItemId = dragData.id || dragData.data._id;
|
||||
const itemId = dragData.id || dragData.data._id;
|
||||
if (dragData.actorId && dragData.actorId != this.id) {
|
||||
console.log("Moving objects", dragData);
|
||||
this.moveItemsBetweenActors(droppedItemId, dragData.actorId);
|
||||
this.moveItemsBetweenActors(itemId, dragData.actorId);
|
||||
return false;
|
||||
}
|
||||
let result = true;
|
||||
const destId = $(event.target).parents(".item").attr("data-item-id");
|
||||
const itemId = dragData.id || dragData.data._id;
|
||||
const item = this.getObjet(itemId);
|
||||
if (item?.isEquipement()) {
|
||||
if (dragData.actorId == this.id) {
|
||||
@ -1061,7 +1060,7 @@ export class RdDActor extends Actor {
|
||||
|
||||
async regrouperEquipementsSimilaires(item, dest) {
|
||||
await dest.quantiteIncDec(Misc.templateData(item).quantite);
|
||||
await this.deleteEmbeddedDocuments('Item', [item.id]);
|
||||
await item.delete();
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -3272,6 +3271,10 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async achatVente(vendeurId, acheteurId, venteData, chatMessageIdVente) {
|
||||
if (vendeurId == acheteurId){
|
||||
ui.notifications.info("Inutile de se vendre à soi-même");
|
||||
return;
|
||||
}
|
||||
if (!game.user.isGM) {
|
||||
RdDActor.remoteActorCall({
|
||||
userId: Misc.connectedGMOrUser(),
|
||||
@ -3286,7 +3289,6 @@ export class RdDActor extends Actor {
|
||||
const itemId = venteData.item._id;
|
||||
|
||||
const coutDeniers = Math.floor((venteData.prixTotal ?? 0) * 100);
|
||||
const achat = duplicate(venteData.item);
|
||||
venteData.quantiteTotal = (venteData.nombreLots ?? 1) * (venteData.tailleLot);
|
||||
if (acheteur) {
|
||||
let resteAcheteur = await acheteur.depenser(coutDeniers);
|
||||
@ -3298,15 +3300,15 @@ export class RdDActor extends Actor {
|
||||
if (vendeur) {
|
||||
let itemData = Misc.data(vendeur.getObjet(itemId));
|
||||
// diminuer QuantiteVendeur
|
||||
if (("quantite" in itemData.data && itemData.data.quantite < venteData.nombreLots)
|
||||
|| (!("quantite" in itemData.data) && venteData.nombreLots != 1)) {
|
||||
if ("quantite" in itemData.data ?
|
||||
itemData.data.quantite < venteData.quantiteTotal : venteData.nombreLots != 1) {
|
||||
// pas assez de quantite
|
||||
await acheteur?.ajouterDeniers(coutDeniers);
|
||||
ui.notifications.warn(`Le vendeur n'a plus assez de ${venteData.item.name} !`);
|
||||
return;
|
||||
}
|
||||
vendeur.ajouterDeniers(coutDeniers);
|
||||
let qtReste = (itemData.data.quantite ?? 1) - venteData.nombreLots;
|
||||
let qtReste = (itemData.data.quantite ?? 1) - venteData.quantiteTotal;
|
||||
if (qtReste == 0) {
|
||||
vendeur.deleteEmbeddedDocuments("Item", itemId);
|
||||
}
|
||||
@ -3316,11 +3318,11 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
|
||||
if (acheteur) {
|
||||
// ajouter l'objet à l'acheteur
|
||||
achat._id = undefined;
|
||||
if ("quantite" in achat.data) {
|
||||
// TODO: achat depuis un compendium
|
||||
const achat = duplicate(Misc.data(vendeur?.getObjet(itemId) ?? game.items.get(itemId)));
|
||||
achat.data.quantite = venteData.quantiteTotal;
|
||||
}
|
||||
achat._id = undefined;
|
||||
// TODO: investigate bug - création marche mal...
|
||||
await acheteur.createEmbeddedDocuments("Item", [achat]);
|
||||
}
|
||||
if (coutDeniers > 0) {
|
||||
@ -3332,11 +3334,11 @@ export class RdDActor extends Actor {
|
||||
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-achat-item.html', venteData)
|
||||
});
|
||||
|
||||
venteData.quantiteNbLots -= venteData.nombreLots;
|
||||
if (venteData.quantiteNbLots <= 0) {
|
||||
if (venteData.quantiteNbLots <= venteData.nombreLots) {
|
||||
ChatUtility.removeChatMessageId(chatMessageIdVente);
|
||||
}
|
||||
else {
|
||||
venteData.quantiteNbLots -= venteData.nombreLots;
|
||||
venteData.jsondata = JSON.stringify(venteData.item);
|
||||
let newMessageVente = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', venteData);
|
||||
const messageVente = game.messages.get(chatMessageIdVente);
|
||||
|
@ -11,7 +11,7 @@ export class DialogItemAchat extends Dialog {
|
||||
ui.notifications.warn("Impossible d'acheter: informations sur l'objet manquantes")
|
||||
return;
|
||||
}
|
||||
const vendeurId = event.currentTarget.attributes['data-actorId']?.value;
|
||||
const vendeurId = event.currentTarget.attributes['data-vendeurId']?.value;
|
||||
const vendeur = vendeurId ? game.actors.get(vendeurId) : undefined;
|
||||
const acheteur = RdDUtility.getSelectedActor();
|
||||
|
||||
@ -25,6 +25,7 @@ export class DialogItemAchat extends Dialog {
|
||||
const prixLot = event.currentTarget.attributes['data-prixLot']?.value ?? 0;
|
||||
let venteData = {
|
||||
item: itemData,
|
||||
vendeurId: vendeurId,
|
||||
vendeur: Misc.data(vendeur),
|
||||
acheteur: Misc.data(acheteur),
|
||||
tailleLot: event.currentTarget.attributes['data-tailleLot']?.value ?? 1,
|
||||
|
@ -8,7 +8,7 @@ export class DialogItemVente extends Dialog {
|
||||
const venteData = {
|
||||
item: itemData,
|
||||
alias: item.actor?.name ?? game.user.name,
|
||||
actorId: item.actor?.id,
|
||||
vendeurId: item.actor?.id,
|
||||
prixOrigine: itemData.data.cout,
|
||||
prixUnitaire: itemData.data.cout,
|
||||
prixLot: itemData.data.cout,
|
||||
|
@ -1,5 +1,5 @@
|
||||
<div class="post-item" data-transfer="{{transfer}}">
|
||||
<h3>Acheter {{#if alias}}{{alias}} propose: {{/if}}{{item.name}}</h3>
|
||||
<h3>{{#if alias}}{{alias}} propose:{{else}}Acheter {{/if}}{{item.name}}</h3>
|
||||
{{#if item.img}}
|
||||
<img src="{{item.img}}" title="{{item.name}}" />
|
||||
{{/if}}
|
||||
@ -26,7 +26,7 @@
|
||||
<span class="chat-card-button-area">
|
||||
<a class="button-acheter chat-card-button"
|
||||
data-jsondata='{{jsondata}}'
|
||||
{{#if actorId}}data-actorId='{{actorId}}'{{/if}}
|
||||
{{#if vendeurId}}data-vendeurId='{{vendeurId}}'{{/if}}
|
||||
data-tailleLot="{{tailleLot}}"
|
||||
data-quantiteNbLots="{{quantiteNbLots}}"
|
||||
data-quantiteIllimite="{{#if quantiteIllimite}}true{{else}}false{{/if}}"
|
||||
|
Loading…
Reference in New Issue
Block a user