EL für Steuern?
- Mirco83
- Unerledigt
-
-
Hallo,
dafür brauchst du keinen Eventlistener, sondern ein Cronjob.
Ich hatte mal einen (veralteten) Ansatz im Plugin drin, diesen findest du noch auf Github: https://github.com/wbbaddons/J…70d6da10b9cc7c266d44fd97c
Nur solltest du die StatementAction, anstelle des StatementEditor, benutzen, dass ist deutlich sauberer.
Beste Grüße
Josh
-
Irgendwie werde ich daraus nicht wirklich schlau, muss ich mir daraus ein installierbares Paket schnüren?
Sowas habe ich noch nie gemacht aber ich bin mir sich wenn mir das kurz erklärt wird kriege ich das hin, ein Ansatz wäre klasse! -
Hallo,
ja, du musst ein eigenes Paket schreiben, welches einen Cronjob hinzufügt.
Auf Kittblog findest du eine kleine Anleitung zum ersten Plugin, vielleicht hilft das
-
Okay danke schön, also wenn ich es richtig verstanden habe alle drei Datein erstellen und die rot makierten Felder einfach an der besagten Stelle einfügen,die JCoinsDailyTaxCronjob.class.php komplett übernehmen und aus der 6. Zeile -use wcf\data\jCoins\statement\StatementEditor; das machen -use wcf\data\jCoins\statement\StatementAction; richtig?
Nun zu einem installierbaren Paket machen (incl. package.xml) und freuen? Das war es schon?
Muss da nicht noch die de.xml und en.xml dazu? -
Hey,
die StatementAction wurde mittlerweile umbenannt (was ich vergessen hatte, zu erwähnen) und heißt nun: wcf\data\user\jcoins\statement\UserJcoinsStatementAction. Das heßt aus dem use [...]StatementEditor muss nun das oben genannte werden. Außerdem solltest du die dafür vorgesehene Action-Methode verwenden. Hier mal ein Beispiel:
Code$this->statementAction = new UserJcoinsStatementAction(array(), 'create', array( 'data' => array( 'reason' => 'Mein Kommentar, gerne auch als Sprachvariable (plain)', 'sum' => 1337, // wie viele JCoins kommen hinzu? Negative Zahlen möglich 'userID' => 1234 // userid ), 'changeBalance' => 1 // sollen die JCoins geupdatet werden? )); $this->statementAction->validateAction(); $this->statementAction->executeAction();
Prinzipiell musst du auch noch eine cronjob.xml hinzufügen (im geposteten Link siehst du den Eintrag Beispielhaft) damit dein Cronjob regelmäßig ausgeführt wird.
Beste Grüße
Josh
-
Ja die Action Methode hatte ich vergessen zu erwähnen habe aber dran gedacht und auch gemacht, momentan verstehe ich das mit den Sprachvariablen nicht, sprich die de.xml und en.xml?
Wie gesagt mache das zum ersten mal momentan sieht meine de.xml so aus:Zitat<?xml version="1.0" encoding="UTF-8"?>
<language xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/language.xsd" languagecode="de" languagename="Deutsch" countrycode="de"><!-- STATEMENTS -->
<category name="wcf.jcoins">
<item name="wcf.jcoins.statement.dailytax.receive"><![CDATA[Tägliche Steuern]]></item>
</category>
</language>ist das so richtig?
-
Hallo,
im Prinzip ist das richtig, jaa
-
Ich muss doch nochmal bei der JCoinsDailyTaxCronjob.class.php nach haken, ist das so weit richtig?
PHP
Alles anzeigen<?php namespace wcf\system\cronjob; use wcf\data\cronjob\Cronjob; use wcf\data\user\User; use wcf\system\WCF; use wcf\data\user\jcoins\statement\UserJcoinsStatementAction; /** * adding the daily tax * * @author Joshua Rüsweg * @package de.joshsboard.dailytax.jcoins * @subpackage system.cronjob * @category Community Framework */ class JCoinsDailyTaxCronjob extends AbstractCronjob { /** * @see wcf\system\cronjob\ICronjob::execute() */ public function execute(Cronjob $cronjob) { parent::execute($cronjob); $this->statementAction = new UserJcoinsStatementAction(array(), 'create', array( 'data' => array( 'reason' => 'wcf.jcoins.statement.dailytax.receive', 'sum' => -5, 'userID' => $userID ), 'changeBalance' => 1 )); $this->statementAction->validateAction(); $this->statementAction->executeAction();
-
Hey,
nein, weil:
- die hälfte fehlt
- du gar keine Nutzer hast, bei denen du eine Statement-Action ausführen möchtest ($userID ist null). Du musst vorher, wie im Beispiel oben, erst alle Nutzer auslesen und dann in einer Schleife für jeden Nutzer einzelnd die Action ausführen.
Beste Grüße. -
Hab da mal fix ein Paket gebastelt für Monatliche Steuern...
Unter Option "JCoins (Einkünfte)" findet Ihr dann den Punkt "Monatliche Steuern (%)"
Dort könnt Ihr dann den Prozentsatz angeben der als Steuern abgezogen soll.
Wird hier ein Wert von 0 angegeben, so wird es deaktiviert...Sind die Steuern weniger als 1 jCoins so wird diese nicht bei dem User berechnet.
-
Habe die "Steuern" Erweiterung nun mal installiert - sie steht aktuell auf dem Wert -5, d.h. jeder User bekam zunächst 5 JCoins direkt nach der Installation abgezogen, also keinen Prozentsatz seines aktuellen Guthabens. Muss ich den Wert ändern um Prozente zu erhalten?
Danke fürs Feedback!
-
Hat das denn keiner im Einsatz oder weiss darüber Bescheid?