Seizoensprijsberekening

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior front end developer Digital Agency Amsterda

Functie Wij werken in multidisciplinaire teams aan verschillende projecten, echter blijf je niet gebonden aan 1 team. Dit houdt in dat wij verschillende specialisten in dienst hebben en deze door middel van een roulatiesysteem in multidisciplinaire teams laten werken. Het team bestaat vaak uit Frontend developer(s), Backend Developer(s), Designer(s), Tester(s) en Mobile Developer(s). Deze teams worden afgewisseld waardoor jij de mogelijkheid krijgt om met iedereen een keer samen te werken. Als Frontend Developer ben jij ónze Specialist op dit gebied. Jij werkt mee aan verschillende projecten voor verschillende klanten. Denk bijvoorbeeld aan klanten, zoals’; BAM, IDFA en Ultimaker. Hierbij zorg

Bekijk vacature »

Mendix Developer

Voor Troostwijk Groep zoeken wij een: Mendix Developer Wij zoeken Je bent een getalenteerde en ervaren Mendix Developer en het is tijd om je horizon te verbreden. Je wilt minder coderen en meer modelleren, minder bezig zijn met allerlei technische details en randvoorwaarden en meer met functionaliteit. Daarnaast ben je trots op de innovatieve en gebruiksvriendelijke applicaties die je in de loop van de jaren hebt gebouwd. Werk je graag in een enthousiast team, wil je veel vrijheid en kun je tegelijkertijd goed met deadlines omgaan, dan ben jij absoluut degene die wij zoeken! Wat je nodig hebt is ruime

Bekijk vacature »

Front end developer binnen de consultancy

Functie Je komt in een team met ambitieuze developers die de passie voor Front-End met jou delen. Samen ga je aan de slag met leuke en leerzame opdrachten. Het team heeft een eigen budget en financiën en zij bepalen zelf hoe dat besteed en investeert wordt. Je gebruikt tools als JavaScript, Node.js, React, Angular, Typescript en Vue.js wanneer je werkt aan de opdrachten. Daarnaast zul je veel leren van je collega’s en gezamenlijk een leuke tijd doorbrengen tijdens activiteiten zoals wintersport, hackatons en conferentiebezoeken. Je krijgt niet alleen de mogelijkheid Front-End te ontwikkelen, maar ook vooral jezelf. Dit kan behaald

Bekijk vacature »

C#.NET ontwikkelaar

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Je bouwt webshops, webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Framework en C#. Je zorgt voor de optimalisering van bestaande software en de automatisering van

Bekijk vacature »

Developer Full Stack

Functie omschrijving Developer gezocht! Ben jij een enthousiaste developer die graag wil bijdragen aan ontwikkelingen binnen een mooie organisatie? Solliciteer dan snel. Wij zijn op zoek naar een Full Stack Developer uit de regio Nijkerk die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een SaaS applicatie. Je moet beschikken over beheersing van zowel de Nederlandse als Engelse taal aangezien je samen met de klant gaat werken. Bedrijfsprofiel Je komt te werken binnen een echt familiebedrijf dat al sinds 1925 actief is binnen de FMCG branche. Het bedrijf heeft 40 medewerkers en er heerst een platte communicatiestructuur waarbij

Bekijk vacature »

PHP Developer - Draag bij aan de maatschappij!

Bedrijfsomschrijving Wil jij als applicatieontwikkelaar deel uitmaken van een gedreven ontwikkelteam en werken aan innovatieve producten? Dan hebben wij dé uitdaging voor jou! Wij zijn op zoek naar een enthousiaste collega die samen met ons de technische ondergrond van onze producten verder wil ontwikkelen met behulp van PHP. Met jouw expertise geef je de finishing touch aan onze producten om jezelf steeds opnieuw weer te verrassen. Functieomschrijving Bij ons staan innovatie en creativiteit centraal. Wij zijn op zoek naar een enthousiaste PHP ontwikkelaar die nieuwe ideeën en inzichten kan inbrengen en daarmee zichzelf en het team verder kan laten groeien.

Bekijk vacature »

Machine Software Developer

Bij een bedrijf in de machinebouw, regio Roosendaal, zijn we op zoek naar een: Machine Software Developer Waar ga je werken? Onze opdrachtgever is gespecialiseerd in de grondverzetmachines. Al meer dan 50 jaar leveren ze zowel nationaal als internationaal diverse machines. Het is een familiebedrijf met een informele werksfeer. Wat ga je doen? Als Machine Software Developer ben je verantwoordelijk voor: - Je ontwerpt, ontwikkelt en debugt software voor machinebesturingssystemen en complexe landbouwmachines; - Je stelt gebruikersinterfaces op (cabinedisplays); - Op termijn ga je softwareprojecten leiden voor specifieke machines; - Inclusief planning, documentatie en validatie; - Om specificaties te verifiëren

Bekijk vacature »

Java Developer

Dit ga je doen Als Java Developer ben je verantwoordelijk voor: Het ontwikkelen van nieuwe en bestaande webservices; Het uitbreiden van functionaliteiten binnen de producten- en dienstenportefeuille; Het werken aan gegevensuitwisseling met bijvoorbeeld SOAP; Testen van frameworks met gebruik van UNIT en Selenium. Hier ga je werken De organisatie waar je komt te werken is een semi-overheidsinstelling, gesitueerd in Utrecht en zorgt voor een goede samenwerking tussen verschillende overheidsinstanties. Het is een familiaire club die gaat voor kwaliteit en langdurige relaties. Zo zorgen zij ervoor dat er op grote schaal vertrouwelijke informatie tussen verschillende overheidsinstellingen wordt uitgewisseld. Hun werk zorgt

Bekijk vacature »

Senior SQR Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13333 Introductie Are you passionate about contributing to the world's most advanced machines. Do you thrive in a challenging environment working with highly motivated and skilled teams? If so, we have the perfect opportunity for you! We are seeking a Senior Software Design Engineer for Sequence Tooling to play a critical role in creating and maintaining mission-critical software applications. In this role, you will focus on achieving maintainable software architecture that is transparent and easy to extend while maintaining a strong focus on software quality. You will work closely with

Bekijk vacature »

Full Stack Developer/ Applicatie Ontwikkelaar

Wat jij doet Als Applicatie Ontwikkelaar ben je onderdeel van het team die de Rimote omgeving ontwikkeld en onderhoud. Hierbij kan je denk aan de cloud, on premise en webapplicaties welke worden gebruikt in bijvoorbeeld industriële bakkerijen, biogasinstallaties en kwekerijen. Deze applicaties verzorgen (remote) de aansturing en monitoring van processen, machines en robots. Van a tot z ben je betrokken bij projecten. Dit betekent vanaf ontwerp tot oplevering. Je moet samen met jouw team een goed product neer zetten. Dit begint met het opzetten van het ontwerp. De basis van de software moet staan als een huis. Daarvoor moet jij

Bekijk vacature »

Mendix Developer

For our client in Amsterdam, we are looking for a Senior Mendix Developer. Company description Our client is an IT Consultancy company who’s been active for 10 years now. With their ambitious team, they are working with different clients in order to help them with analyzing their data and giving advice to them, regarding how they can use their data in the smartest ways, or to make sure that their mobile or web applications are working efficiently. As you get a glimpse of various industries, it is guaranteed that no day will be the same. Job description As a Mendix

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Senior Full Stack developer

Bedrijfsomschrijving tbd Functieomschrijving Full Stack Java Development bij Randstad Groep Nederland (HQ) Er is een vacature in het Corporate Client Solutions (CCS) team. Dit team is met een ander team net begonnen aan het project ‘Grip op Inhuur’. Het doel van dit project is de tevredenheid van onze leveranciers te verhogen en de efficiëntie van onze administratie te verbeteren. Onderdeel daarvan is een ‘Mijn-omgeving’ voor ZZP’ers en leveranciers. Naast dit nieuwe project werkt het team ook aan het onderhoud en verbeteren van een digitaal vacature management systeem waarmee dagelijks vele vacatures worden voorzien. Het team ontwikkelt zo veel mogelijk zelf

Bekijk vacature »

Cloud Developer

Cloud Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Front-end Developer

Do you want to work with the latest technologies on the development of new systems and applications? Create elegant interfaces using VueJS for thousands of users? Get moving and strengthen Nederlandse Loterij as a Front-end Developer. Thanks to your efforts, our services are always presented in style. As a Front-end Developer you are responsible for website development and improving customer experience based on data analyze. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Front-end Developer you score by: Writing elegant, testable components without side-effects to provide functionality to the users Website development, adding

Bekijk vacature »
Marc Huyghebaert

Marc Huyghebaert

24/03/2017 04:11:36
Quote Anchor link
Hoi,

Ik zou graag beginnen met een korte schets

Ik ben bezig met een project (verhuring van vakantie woning van en vriend). Er wordt gewerkt met maximaal 5 seizoenen

1. Laag is van 01.11 tot 31.03 prijs 325,-
2. Mid1 is van 01.04 tot 30.06 prijs 375,-
3. Hoog is van 01.07 tot 31.08 prijs 575,-
4. Mid2 is van 01.09 tot 31.10 prijs 375,-
deze liggen vast, de 5de kan al dan niet geactiveerd worden bvb rond de kerstperiode uiteindelijk is het principe van berekenen hetzelfde (vermoed ik).
het jaartal speelt geen rol.

misschien nu al en stukje code die ik heb

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
$converted_startdate
= date('Y-m-d',strtotime($startingdate));
$converted_enddate = date('Y-m-d',strtotime($endingdate));

hieronder het stukje waarbij de data haal uit de database

$propertyresult = mysql_query("SELECT * FROM propertiesmain WHERE propertiesmain_id = '$propID'");
if (mysql_num_rows($propertyresult) > 0) {
    $psubrow = mysql_fetch_assoc($propertyresult);
    $propertyCode = $psubrow['propertiesmain_code'];
    
    // current year + 1
    $current_year = date("Y");
    $year_plus_1 = date("Y", strtotime("+1 years", strtotime(date("Y"))));
    $year_min_1 = date("Y", strtotime("-1 years", strtotime(date("Y"))));
    
    // table 1 periode and price
    $tablestart1_org = date('Y-m-d',strtotime($psubrow['propertiesmain_tablestart1']));
    $tablestart1_replaced = substr_replace($tablestart1_org,"2017",0,4); // no matter what year convert to 2017
    $tablestart1_replaced1 = substr_replace($tablestart1_org,$year_min_1,0,4); // no matter what year convert one year back
    $tableend1_org = date('Y-m-d',strtotime($psubrow['propertiesmain_tableend1']));
    $tableend1_replaced = substr_replace($tableend1_org,$year_plus_1,0,4);
    $tableend1_replaced1 = substr_replace($tableend1_org,$current_year,0,4);
    $tableprice1 = $psubrow['propertiesmain_tableprice1'];
    
    // table 2 periode and price
    $tablestart2_org = date('Y-m-d',strtotime($psubrow['propertiesmain_tablestart2']));
    $tablestart2_replaced = substr_replace($tablestart2_org,"2017",0,4); // no matter what year convert to 2017
    $tablestart2_replaced1 = substr_replace($tablestart2_org,$year_min_1,0,4); // no matter what year convert to 2017
    $tableend2_org = date('Y-m-d',strtotime($psubrow['propertiesmain_tableend2']));
    $tableend2_replaced = substr_replace($tableend2_org,$current_year,0,4);
    $tableprice2 = $psubrow['propertiesmain_tableprice2'];
    
    // table 3 periode and price
    $tablestart3_org = date('Y-m-d',strtotime($psubrow['propertiesmain_tablestart3']));
    $tablestart3_replaced = substr_replace($tablestart3_org,"2017",0,4); // no matter what year convert to 2017
    $tablestart3_replaced1 = substr_replace($tablestart3_org,$year_min_1,0,4); // no matter what year convert to 2017
    $tableend3_org = date('Y-m-d',strtotime($psubrow['propertiesmain_tableend3']));
    $tableend3_replaced = substr_replace($tableend3_org,$current_year,0,4);
    $tableprice3 = $psubrow['propertiesmain_tableprice3'];
    
    // table 4 periode and price
    $tablestart4_org = date('Y-m-d',strtotime($psubrow['propertiesmain_tablestart4']));
    $tablestart4_replaced = substr_replace($tablestart4_org,"2017",0,4); // no matter what year convert to 2017
    $tablestart4_replaced = substr_replace($tablestart4_org,"2017",0,4); // no matter what year convert to 2017
    $tableend4_org = date('Y-m-d',strtotime($psubrow['propertiesmain_tableend4']));
    $tableend4_replaced = substr_replace($tableend4_org,$current_year,0,4);
    $tableprice4 = $psubrow['propertiesmain_tableprice4'];
    
    // table 5 periode and price
    $tablestart5_org = date('Y-m-d',strtotime($psubrow['propertiesmain_tablestart5']));
    $tablestart5_replaced = substr_replace($tablestart5_org,"2017",0,4); // no matter what year convert to 2017
    $tableend5_org = date('Y-m-d',strtotime($psubrow['propertiesmain_tableend5']));
    $tableend5_replaced = substr_replace($tableend5_org,$current_year,0,4);
    $tableprice5 = $psubrow['propertiesmain_tableprice5'];
    
    // winter specials
    $longterm_periode = $psubrow['propertiesmain_duration'];
    $longterm_price = $psubrow['propertiesmain_longtermprice'];
    
    // cost of final cleaning
    $FinalCleaningCost = $psubrow['propertiesmain_endcleaning'];
    // deposite
    $DepositeGuarentee = $psubrow['propertiesmain_guarentee'];
                                            
}
else{
    show_alert('ERROR: Could not find property!');
    die();
}

?>


wat voorlopig werkt is, indien een boeking plaats vindt binnen éénzelfde seizoensperiode dit doe ik zo

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
// table 1 ??
if (($converted_startdate >= $tablestart1_replaced) AND ($converted_enddate <= $tableend1_replaced)) {
    $daycost = number_format(($tableprice1 / 7),2); // convert from week price to daily price
    
    $holidaycost = number_format($totaldays * $daycost,2); // number of days times day price
    $seasson = 'Low';
    
    // winterprice is possible check if within winter period
    if ($weeks >= $longterm_periode){
        $daycost = number_format(($longterm_price / 7),2); // convert from week price to daily price
        
        $holidaycost = number_format($totaldays * $daycost,2); // number of days times day price
        $winterprice = 1; //mark that winterprice is being used
        $seasson = 'Winter';
    }
}
        

// table 2 ??
if ($converted_startdate >= $tablestart2_replaced AND $converted_enddate <= $tableend2_replaced) {
    $daycost = number_format(($tableprice2 / 7),2); // convert from week price to daily price
    
    $holidaycost = number_format($totaldays * $daycost,2); // number of days times day price
    $seasson = 'Mid';
}

// table 3 ??
if ($converted_startdate >= $tablestart3_replaced AND $converted_enddate <= $tableend3_replaced) {
    $daycost = number_format(($tableprice3 / 7),2); // convert from week price to daily price
    
    $holidaycost = number_format($totaldays * $daycost,2); // number of days times day price
    $seasson = 'High';
}

// table 4 ??
if ($converted_startdate >= $tablestart4_replaced AND $converted_enddate <= $tableend4_replaced) {
    $daycost = number_format(($tableprice4 / 7),2); // convert from week price to daily price
    
    $holidaycost = number_format($totaldays * $daycost,2); // number of days times day price
    $seasson = 'Mid';
}

// table 5 ??
if ($converted_startdate >= $tablestart5_replaced AND $converted_enddate <= $tableend5_replaced) {
    $daycost = number_format(($tableprice5 / 7),2); // convert from week price to daily price
    
    $holidaycost = number_format($totaldays * $daycost,2); // number of days times day price
    $seasson = 'Extra';
}

?>


bovenstaand lijkt tot heden goed te werken, maar nu komt het. er kunnen uiteindelijk ook seizoen overschrijdende boekingen plaats vinden, dus waarvan xx dagen is één seizoen en xx aantal dagen in daaropvolgend seizoen. In theorie kwam ik met de oplossing als volgt

stap 1. bereken het totaal aantal vakantie nachten
stap 2. kijk na in welke table (seizoen) de aankomst datum start
stap 3. bereken het aantal dagen tot einde van deze table (einde start seizoen dus)
stap 4. trek restdagen af van het totaal aantal vakantie nachten, en je bekomt het rest aantal nachten in volgend seizoen

dit lijkt me een juiste beredenering toch?
maar in de praktijk dit omzetten in php loopt dus mis, en daarom hier m'n vraag wat doe ik verkeerd???
onderstaand is wat ik heb

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
// calculate days
$holidayduration = floor(strtotime($converted_enddate) - strtotime($converted_startdate));
$holidayduration = floor($holidayduration/(60*60*24));

// if starts in low seasson and runs over end of low seasson
if (($converted_startdate >= $tablestart1_replaced1) && ($converted_enddate > $tableend1_replaced1)) {
    $daycost1 = 0;
    $daycost2 = 0;
    $daycost = 0;
    
    // calculate days in and days over
    $overspilled = floor(strtotime($converted_enddate) - strtotime($tableend1_replaced1));
    //$holidays = floor($holidays/(60*60*24)) + 1;
    $overspilled = floor($overspilled /(60*60*24));
        
    $normaldays = $holidayduration - $overspilled;
    $daycost1 = number_format(($tableprice1 / 7),2); // convert from week price to daily price
    $holidaycostl = number_format($normaldays * $daycost1,2);
    //echo 'days1 '.$normaldays.' cost1 '.$holidaycostl.'<br>';
        
    $daycost2 = number_format(($tableprice2 / 7),2); // convert from week price to daily price
    $holidaycost2 = number_format($overspilled * $daycost2,2);
    //echo 'days2 '.$overspilled.' cost1 '.$holidaycost2.'<br>';
    
    $holidaycost = number_format($holidaycostl + $holidaycost2,2); // number of days times day price
    //echo '<br>low to mid holidaycost '.$holidaycost;

    $seasson = 'Low-Mid';
}


// if starts in mid seasson and runs over end of mid seasson
if (($converted_startdate >= $tablestart2_replaced1) && ($converted_enddate > $tableend2_replaced)) {
    $daycost1 = 0;
    $daycost2 = 0;
    $daycost = 0;

    // calculate days in and days over
    $overspilled = floor(strtotime($converted_enddate) - strtotime($tableend2_replaced));
    //$holidays = floor($holidays/(60*60*24)) + 1;
    $overspilled = floor($overspilled /(60*60*24));
    
    $normaldays = $holidayduration - $overspilled;
    $daycost1 = number_format(($tableprice2 / 7),2); // convert from week price to daily price
    $holidaycostl = number_format($normaldays * $daycost1,2);
                
    $daycost2 = number_format(($tableprice3 / 7),2); // convert from week price to daily price
    $holidaycost2 = number_format($overspilled * $daycost2,2);
        
    $holidaycost = number_format($holidaycostl + $holidaycost2,2); // number of days times day price
    //echo '<br>mid to high holidaycost '.$holidaycost;

    $seasson = 'Mid-High';
}


// if starts in high seasson and runs over end of high seasson
if (($converted_startdate >= $tablestart3_replaced1) && ($converted_enddate > $tableend3_replaced)) {
    $daycost1 = 0;
    $daycost2 = 0;
    $daycost = 0;

    // calculate days in and days over
    $overspilled = floor(strtotime($converted_enddate) - strtotime($tableend3_replaced));
    //$holidays = floor($holidays/(60*60*24)) + 1;
    $overspilled = floor($overspilled /(60*60*24));

    $normaldays = $holidayduration - $overspilled;

    $daycost1 = number_format(($tableprice3 / 7),2); // convert from week price to daily price
    $holidaycostl = number_format($normaldays * $daycost1,2);
        
    $daycost2 = number_format(($tableprice4 / 7),2); // convert from week price to daily price    
    $holidaycost2 = number_format($overspilled * $daycost2,2);
    $holidaycost = number_format($holidaycostl + $holidaycost2,2); // number of days times day price
    //echo '<br>high to mid2 holidaycost '.$holidaycost;

    $seasson = 'High-Mid';
}


// if starts in mid2 seasson and runs over end of mid2 seasson
if (($converted_startdate >= $tablestart4_replaced1) && ($converted_enddate > $tableend4_replaced)) {
    $daycost1 = 0;
    $daycost2 = 0;
    $daycost = 0;

    // calculate days in and days over
    $overspilled = floor(strtotime($converted_enddate) - strtotime($tableend4_replaced));
    //$holidays = floor($holidays/(60*60*24)) + 1;
    $overspilled = floor($overspilled /(60*60*24));

    $normaldays = $holidayduration - $overspilled;

    $daycost1 = number_format(($tableprice4 / 7),2); // convert from week price to daily price
    $holidaycostl = number_format($normaldays * $daycost1,2);
    
    $daycost2 = number_format(($tableprice5 / 7),2); // convert from week price to daily price    
    $holidaycost2 = number_format($overspilled * $daycost2,2);

    $holidaycost = number_format($holidaycostl + $holidaycost2,2); // number of days times day price
    //echo '<br>mid2 to exta holidaycost '.$holidaycost;

    $seasson = 'Mid-Ext';
}


// if starts in extra seasson and runs over end of extra seasson
if (($converted_startdate >= $tablestart5_replaced1) && ($converted_enddate > $tableend5_replaced)) {
    $daycost1 = 0;
    $daycost2 = 0;
    $daycost = 0;

    // calculate days in and days over
    $overspilled = floor(strtotime($converted_enddate) - strtotime($tableend5_replaced));
    //$holidays = floor($holidays/(60*60*24)) + 1;
    $overspilled = floor($overspilled /(60*60*24));

    $normaldays = $holidayduration - $overspilled;

    $daycost1 = number_format(($tableprice5 / 7),2); // convert from week price to daily price
    $holidaycostl = number_format($normaldays * $daycost1,2);
    
    $daycost2 = number_format(($tableprice1 / 7),2); // convert from week price to daily price    
    $holidaycost2 = number_format($overspilled * $daycost2,2);

    $holidaycost = number_format($holidaycostl + $holidaycost2,2); // number of days times day price
    //echo '<br>ext to low holidaycost '.$holidaycost;

    $seasson = 'Ext-Low';
}

?>


ergens maak ik dus fouten, ik dacht na dagen van proberen dat ik het gevonden van (test van laag naar mid1 seizoen) dit dus gecopieerd en aangepast voor de volgende seizoenen, maar gisteren bleek bij test boeking van 30.09 tot 30.11 het is te lopen en ook een test boeking van 29.06.(2018) tot 14.07.(2018) volledig mis te lopen. dus telkens bij overschrijding van en seizoen.

Dus mijn vraag is, of iemand mij kan tonen waar ik in de fout ga, of mij op weg kan helpen? ik neem aan dat veel anders en beter geschreven kan worden, maar da's zoals ik php ken, ben 56 en tot heden alles zlf geleerd door naar veel voorbeelden te kijken. Enfin, ik hoop dat iemand mij wil/kan helpen

alvast bedankt voor alle feedback
marc

Ward:
Graag voortaan bij code de [code][/code]-tags gebruiken.
Hier kun je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 24/03/2017 08:29:50 door Ward van der Put
 
PHP hulp

PHP hulp

06/11/2024 04:42:38
 
Ward van der Put
Moderator

Ward van der Put

24/03/2017 13:27:24
Quote Anchor link
Je rekent nu met 60*60*24 voor dagen en voert allerlei stringoperaties uit. Dat is nergens voor nodig: maak het jezelf makkelijk met de speciale objecten voor datums en tijden DateTime, DateInterval en DatePeriod.

Ik heb een voorbeeld voor je uitgewerkt, zodat je ziet hoe je die drie samen kunt gebruiken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
// Tijdzone voor o.a, Nederland en België
date_default_timezone_set('Europe/Amsterdam');

// Huidig jaar
define('CURRENT_YEAR', date('Y'));

/**
 * Seizoenen en prijzen
 *
 * 1. Laag is van 01.11 tot 31.03 prijs 325,-
 * 2. Mid1 is van 01.04 tot 30.06 prijs 375,-
 * 3. Hoog is van 01.07 tot 31.08 prijs 575,-
 * 4. Mid2 is van 01.09 tot 31.10 prijs 375,-
 */

$seasons = array(
    1 => new \DatePeriod(
        new
\DateTime(CURRENT_YEAR . '-11-01'),
        new
\DateInterval('P1D'),
        new
\DateTime(CURRENT_YEAR + 1 . '-04-01')
    ),

    2 => new \DatePeriod(
        new
\DateTime(CURRENT_YEAR . '-04-01'),
        new
\DateInterval('P1D'),
        new
\DateTime(CURRENT_YEAR . '-07-01')
    ),

    3 => new \DatePeriod(
        new
\DateTime(CURRENT_YEAR . '-07-01'),
        new
\DateInterval('P1D'),
        new
\DateTime(CURRENT_YEAR . '-09-01')
    ),

    4 => new \DatePeriod(
        new
\DateTime(CURRENT_YEAR . '-09-01'),
        new
\DateInterval('P1D'),
        new
\DateTime(CURRENT_YEAR . '-11-01')
    ),
);


$prices = array(
    1 => 325,
    2 => 375,
    3 => 575,
    4 => 375,
);


/**
 * Test case: boeking voor 8 dagen vanaf 25 juni, dus met een overlapping
 * tussen seizoen 2 en seizoen 3.  De eerste twee variabelen $start en $days
 * haal je later uit een formulier voor nieuwe boekingen of een database
 * voor bestaande boekingen.
 */

$start = new \DateTime(CURRENT_YEAR . '-06-25');
$days = 8;
$rental_period = new \DatePeriod($start, new \DateInterval('P1D'), $days - 1);
$rental_price = 0;

echo '<pre>';
foreach ($rental_period as $date) {
    foreach ($seasons as $key => $season) {
        foreach ($season as $day) {
            if ($date == $day) {
                echo $date->format('Y-m-d') . ' kost ' . $prices[$key];
                echo PHP_EOL;
                $rental_price += $prices[$key];
            }
        }
    }
}


echo 'Totale kosten: ' . $rental_price;
?>


Output:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
2017-06-25 kost 375
2017-06-26 kost 375
2017-06-27 kost 375
2017-06-28 kost 375
2017-06-29 kost 375
2017-06-30 kost 375
2017-07-01 kost 575
2017-07-02 kost 575
Totale kosten: 3400
Gewijzigd op 24/03/2017 13:28:56 door Ward van der Put
 
Aad B

Aad B

24/03/2017 15:03:25
Quote Anchor link
Een andere manier, ook meer variabel qua prijs en qua blokkade: Zet het hele jaar per dag in een MySQL tabel en in deze tabel plaats je dan de datum, de prijs (per nacht) en een vlaggetje voor geblokkeerd en/of schrikkeldag.
Het enige dat je dan moet doen bij een reservering is een SQL, grofweg:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT sum(prijs), count(1)
FROM jaar_dag_tabel
WHERE datum between $begin_datum AND $eind_datum
AND geblokkeerd = 0

Je kan hiermee per dag de prijs flexibel bijstellen zonder php code aan te passen.
Dagen blokkeren (gereserveerd of geen schrikkeldag)

Vooraf maak je een telling van het aantal nachten (verschil tussen $eind_datum - $begin_datum) en dat moet dan overeenkomen met het resultaat van de count. Zoniet dan is er iets aan de hand, het overlapt bijvoorbeeld reeds gereserveerde of geblokkeerde dagen.
Gewijzigd op 24/03/2017 15:10:20 door Aad B
 
Marc Huyghebaert

Marc Huyghebaert

25/03/2017 00:30:50
Quote Anchor link
alvast bedankt voor de feedback - ik kan weer verder schrijven
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.