ik heb ooit een keer een heel mooi boekhoudscript gemaakt en deze moet nu een beetje aangepast worden
eigelijk heel veel

het is van jaren allemaal hardcoded in elkaar gezet en eigenlijk bijna geen gebruik van functies

ik heb dus op heel veel paginas 1 en dezelfde code staan die eigenlijk gewoon in een functie zouden moeten

maar op 1 of andere manier weet ik niet meer hoe ik meerdere outputs krijg

input is datum, accountid, userid

output is een hele waslijst
die ik dus individueel moet kunnen opvragen indien dit zou kunnen met een functie
ik zal hier ff een voorbeeld geven van 1 van de codes die er nu in staan





$sqldranken = "SELECT * FROM systeem_invoertotaal WHERE account='$accountid' AND id_user='$userid' AND soort='dranken' AND invoer_over='$datum' ORDER BY id ASC";
$resultaatdranken = $db->sql_query($sqldranken) or die(mysqli_error());
							

$eindtotaaldrankenbtwlaagafgerond = '0';
$eindtotaaldrankenbtwhoogafgerond = '0';

while($omzetdranken = mysqli_fetch_assoc($resultaatdranken)){
$btwsoort = ''.$omzetdranken['btwhoogte'].'';	
															
if($btwsoort == btwlaag) {
$omzetdrankenbtwlaag = mysqli_fetch_array($db->sql_query("SELECT * FROM systeem_invoertotaal WHERE account='$accountid' AND id='$omzetdranken[id]' AND id_dame='$userid' AND soort='dranken' AND btwhoogte='btwlaag' AND invoer_over='$datum';"));

$totaaldrankenbtwlaagafgerond = $omzetdrankenbtwlaag[aantal] * $omzetdrankenbtwlaag[bedrag];												$totaaldrankenbtwhoogafgerond = '0';
												
}
elseif($btwsoort == btwhoog) {
$omzetdrankenbtwhoog = mysqli_fetch_array($db->sql_query("SELECT * FROM systeem_invoertotaal WHERE account='$accountid' AND id='$omzetdranken[id]' AND id_dame='$userid' AND soort='dranken' AND btwhoogte='btwhoog' AND invoer_over='$datum';"));

$totaaldrankenbtwhoogafgerond = $omzetdrankenbtwhoog[aantal] * $omzetdrankenbtwhoog[bedrag];
$totaaldrankenbtwlaagafgerond = '0';
}
else {
$totaaldrankenbtwlaagafgerond = '0';
$totaaldrankenbtwhoogafgerond = '0';
		
}

$eindtotaaldrankenbtwlaagafgerond = $eindtotaaldrankenbtwlaagafgerond + $totaaldrankenbtwlaagafgerond;
$eindtotaaldrankenbtwhoogafgerond = $eindtotaaldrankenbtwhoogafgerond + $totaaldrankenbtwhoogafgerond;							
}




dit is maar een klein stukje maar ik moet gewoon weer ff snappen hoe ik 2 outputs uit een functie krijg
of meerdere

:)

mag ook iets anders zijn als ik het maar op verschillende plekken kan gebruiken
welke editor gebruik je?

Je meldt hierboven dat je een hele berg aan variabelen kopieert, omdat de rest van je code de variabelen onder die naam wil hebben.

Met bijvoorbeeld Netbeans kun je je code laten refactoren om een var te veranderen van naam.

Of door alle scripts laten zoeken naar variabelen of strings.
Dat zou kunnen oplossen dat je nu al je vars verdubbelt. En daarmee ook je geheugen gebruik.

Waar was je dan specifiek naar op zoek, wat de cursus niet aanbood?


nou om te beginnen dus een manier om complexe berekeningen te maken

ik heb ook sql geprobeerd zoals eerder is genoemd
maar dit kan dus niet

simpele sommetjes wel

iedereen die ik spreek praat altijd heel makkelijk
gebruik de geld type,
gebruik sum
gebruik group
enz enz

all deze dingen zijn bedoeld voor enkele simpele sommetjes en niet met de belasting reken manier waardoor je dus fouten krijgt
iedereen zegt tegen mij dat de berekeningen te groot zijn en dat dit makkelijker kan met betere php of sql maar niemand komt met een oplossing

ik zal even een leuk stukje hieronder geven en dan gaan we kijken of hier slimme mensen zijn

ik pak even 1 dag van 1 fictieve merknemer
in een massage/welness centre die werkt via da opting-in regeling van de belastingdienst
dit houd in dat werknemer in een soort fictieve loondienst zit en aan het eind van de dag een netto bedrag in handen krijgt
gebaseerd op 60/40

deze werknemer gebruikt onderstaande belasting tarieven en diensten en krijgt een speciale heffingskorting en een onbelaste onkosten vergoeding
dit is iets speciaals voor de bedrijven waar ik dit voor maak


btwhoog = 21%
btwlaag = 9%
loonheffing= 8%
zfwpremie = 5,70%
onbelaste_onkosten_vergoeding = 20%
massage = €60,-
verkoop van een bad of jacuzzie inclusief vol laten lopen enz €20,- met een provisie van een netto bedrag van €10,-
dit bedrag is netto naar werknemer maar btw moet verplaats worden naar werkgever maar wel los gespecificeerd

welnesspakket €50,- met een provisie van €15,-
dit bedrag is netto naar werknemer maar btw moet verplaats worden naar werkgever maar wel los gespecificeerd

deze werknemer heeft
2 x €60,-
2 x €20,- waarvan deze werknemer een provisie krijgt van netto €10,-
1 x €50,- waarvan deze werknemer een provisie krijgt van netto €15,-

met deze gegevens moet er een berekening komen
die getoond wordt op 1 pagina
in detail dus alleen een uitkomst werkt dus niet

hieronder de lijst van welke antwoorden ik zoizo moet hebben
totale omzet
totale btw omzet

totale omzet min btw
totale omzet min btw en ook min de bedragen van de provisie delen die overblijven voor werkgever
van het bedrag dat overblijft moet het ingedeeld worden in 60/40
over het 60% deel moet een onbelaste onkosten worden berekent van 20%

dit bedrag moet je apart houden
er blijft dan een subtotaal over, over dit bedrag moet de loonheffing maar ook de zfwpremie worden berekent en ook worden getoond
deze 2 bedragen moeten worden opgeteld en worden afgetrokken van het subtotaal

van het bedrag dat overblijft mag die eerdere 20% er weer bij worden opgeteld
de uitkomst hiervan zou 84,14 moeten zijn maar ik moet dus ook alle andere bedragen hebben
en dit wil ik dan in een mooie php of sql code
de bedragen moeten meeneembaar zijn naar andere paginas en ook moeten de berekeningen in een soort foreach of loop worden gezet


iemand die dit voor mij kan maken en ook echt een verbetering is van alles wat ik zelf al heb
en ook makkelijk herkenbeer in begrijpbaar in het script krijgt van mij €500,-

ik bedoel dus niet
$eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond verkleinen naar $var1 ofzo

succes :D



welke editor gebruik je?

Je meldt hierboven dat je een hele berg aan variabelen kopieert, omdat de rest van je code de variabelen onder die naam wil hebben.


ik gebruik nu meestal notepad++ maar inderdaad er zijn betere tools
grootste reden dat ik veel dubbel schrijf is dat ik dus weinig functies heb en daarom dus steeds opnieuw code moet maken
hier ben ik al flink aanpassingen in aan het maken.








Dan zijn multidimensionale array's de uitkomst. Beter geen $var1, want dat zegt niks wat het doet.
- Ariën - op 18/03/2020 13:42:06

Dan zijn multidimensionale array's de uitkomst.


ik heb even via internet gezocht hoe dat allemaal werkt met die multidimensionale array's en inderdaad, voor de uitkomsten kan ik dit gebruiken maar het berekenen om bij deze uitkomsten te komen blijkt volgens internet bijna tot niet mogelijk

het kan wel maar dan wordt de code vaak nog groter dan dat ik al heb
en visueel dus niet goed overzichtelijk in het script





Je verdeelt je data dan is een boom van data, in plaats dat je het zelf moet uitpluizen.
Dus het is juist effectief, en ook duidelijker in je script omdat je makkelijk door bepaalde data kan lopen via een foreach(). Dis bijvoorbeeld alle tarieven inclusief BTW, of juist exclusief. Of de inkomsten en uitgaven apart.

En met functies zie ik juist een mooie kant zodat je die 'boom' zelf met parameters vorm kan geven.
het is dus niet alleen btw of zonder btw
of plus en min

ik heb meerdere scripters in verleden gevraagd om iets te maken / bedenken

iedereen komt met hoe het zou kunnen
maar theorie en praktijk blijkt hier een heel groot verschil

ik geef al jaren aan scripters delen van scripts in de hoop dat iemand iets kan maken maar is tot op heden nog niemand gelukt
ik heb ooit iemand gevonden die inderdaad met classes functies, arrays en met al die dingen iets kon maken
zelfs met een cache in json enz

echter was het script heel onoverzichtelijk
het was langzamer
eigelijk in veel delen groter
en ik kon zelf persoonlijk door mijn lack aan kennis er niet veel mee als ik iets wou aanpassen

even voor duidelijkheid er is dus geen boom van data
er zijn een aantal regels in mijn database waarmee ik deze boom eerst moet creeren


ik heb nu dus naar aanleiding van
@Rob Doemaarwat
(het eerste andwoord in mijn topic)

een gehele functie pagina gemaakt die ik nu dus netjes overal zou kunnen opvragen als ik dat wens
heel erg bedankt hiervoor

deze functies zou ik in toekomst inderdaad nog beter kunnen maken
ik gebruik in mijn functies hele lange vars omdat ik dat makkelijker vind kwa het vinden van welke var ik nodig heb
mijn langste is als ik het even snel bekijk is deze
$eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond

van dit sort variabelen heb ik wel 100

kan ik ook bv
$1 van maken maar wat is 1 dan
ik kan inderdaad al deze data in zo'n boom verwerken enz
of het nut heeft ???

het gaat mij dus voornamelijk om de berekening, en niet om hoe ik de antwoorden neerzet









[color=red]Ik wil je graag toch nog even vriendelijk doch dringend vragen om wat interpuncties te gebruiken, en minder vaak een nieuwe regel te starten. Het leest echt heel vermoeiend, als ik eerlijk mag zeggen.[/color]

$eindtotaalspecialbemiddelingprovisieexploitantexbtwafgerond

Die brei kan je zeker uit elkaar trekken....
het gaat allereerst om bedragen? Dus dan hebben we al:
$bedrag

Dan kijken we verder naar het eindtotaal
$bedrag['eindtotaal']

De eindtotalen kunnen we dus verder aftakken in 'bemiddelingprovisie'
En dan hebben we dus dit:
$bedrag['eindtotaal']['bemiddelingprovisie']
En als we dan nog de ex btw willen hebben, dan kan je dat nog verder normaliseren:
$bedrag['eindtotaal']['bemiddelingprovisie']['exbtw']

Kijk eens aan, en dan heb je al een mooie multidimensionale array waarbij je bijvoorbeeld prima alle waardes van het eindtotaal en bemiddelingsprovisie kan ophalen:
$bedrag['eindtotaal']['bemiddelingprovisie']

Het leest ook veel lekkerder dan een typisch Scrabblewoord, en het zal vast ook zorgen voor minder schrijffouten.
Tip: Gebruik print_r() om het leesbaar te maken, en zet het tussen <pre>

Overigens kan je geen $1 gebruiken. Dat mag niet in variabelen omdat dit al gereserveerd is voor placeholders in reguliere expressies. En het zegt bovendien totaal niks. 1 Bloemkool, 1 aardbei, 1 raceauto, 1 poeremetator? Tja...
Sorry van interpuncties, ik ben daar niet goed in dus hou daar een beetje rekening mee.
ik doe juist om die reden een paar regeltjes extra om het netjes uit elkaar te halen.

Wat jij nu net aan mij laat zien is iets anders dan internet mij laat zien
het is meer een soort multidimensionale var.
maar ok het ziet er inderdaad mooi uit.

maar hoe werkt die berekening hierachter dan ?
Ik snap dat ik op deze manier gegevens uit bv mijn db kan halen ofzo,

want op jouw manier, even niet denken aan, of een berekingen dan werkt.
mijn eind berekening is van 1 bepaald deel bv

$eindtotaalbemiddelingafgerond = $eindtotaalbemiddelingafgerond + $totaalbemiddelingafgerond;
$eindtotaalbemiddelingbtwafgerond = $eindtotaalbemiddelingbtwafgerond + $btwtotaalbemiddelingafgerond;
$eindtotaalbemiddelingexbtwafgerond = $eindtotaalbemiddelingexbtwafgerond + $extotaalbemiddelingafgerond;

$eindtotaalminutenbemiddeling = $eindtotaalminutenbemiddeling + $minutenbemiddeling;

dit is de optelling van alle medewerkers van 1 dag,
hoe moet ik dit dan op jouw manier doen?
want $bedrag is er ja. echter heb ik heeeeeeel veel bedrag dus die geven we een apparte naam $bedragbemiddeling

o wacht ik heb meerdere losse bedragen van $bedragbemiddeling
en heel veel dagen

dus om dat los te trekken van de rest en goede bedragen te krijgen geef je het een 0

$bedragbemiddelingdag '0';
ik laat even de berekening achterwegen maar dat wordt dan na een berekening
$bedragbemiddeling = het berekendebedrag;

om dit netjes op te tellen wordt het

$bedragbemiddelingdag = $bedragbemiddelingdag + $bedragbemiddeling;

doe ik dit niet met een 0 dan wordt het bestaande bedrag meegenomen naar alle andere dagen die erna komen

maar even zoals als jij het dus zegt even buiten het feit om dat ik met dat dus niks kan
$bedrag['eindtotaalbemiddelingprovisieexbtw']
veranderen naar
$bedrag['eindtotaal']['bemiddeling']['provisie']['exbtw']












Je kan er zeker wel wat mee.
Ik zou zeggen: Ga er eerst eens mee spelen in plaats van enkel te zeggen wat je denkt.
Bouw eerst eens hardcoded je array op met wat fictieve data, en probeer met PHP eens berekeningen ermee te maken, zoals alles uit een array op te tellen. Als je het goed logisch in elkaar hebt gezet kan je de data zelfs nog indelen op bedrijf, en dit ophalen en berekenen.

Array's kunnen meer dan je denkt:
https://www.php.net/manual/en/ref.array.php
Optellen, aftrekken, vermenigvuldigen etc...

Dus verdiep je eens in deze materie!
Het gaat je zeker een hoop code schelen!

Laat maar eens zien wat je hebt geprobeerd. Ben benieuwd! :)
omg daar gaan we weer .
ga er meespelen... omdat niemand mij dit zelf kan uitleggen .

bouw hardcoded je array en ga optel sommetjes maken ...
ik moet optellen delen, min percentages , bedragen die ik daarmee heb gekregen bewaren en dan weer gebruiken enz enz

ik probeer me al jaren te verdiepen in betere code maar at ik zoek kan er niet mee
tenminste niet dat ik kan vinden en niemand kan mij ook een voorbeeld geven

idee is goed
in praktijk kan het echter tot op heden nog niet

en niemand bewijst mij het tegendeel
ik hoor alleen maar met ... manier zou het moeten kunnen
maar een goede uitleg geven ho maar






[size=xsmall]Toevoeging op 18/03/2020 16:28:04:[/size]

- Ariën - op 18/03/2020 16:17:15

Array's kunnen meer dan je denkt:
https://www.php.net/manual/en/ref.array.php
Optellen, aftrekken, vermenigvuldigen etc...

klopt maar niet alles tegerlijk en in een loop en dan gegevens daaruit halen om daar weer vrder mee te rekenen enz

Reageren