Seizoensprijsberekening

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

OutSystems developer

Dit ga je doen Klanten adviseren over de mogelijkheden van OutSystems; OutSystems oplossingen ontwikkelen en implementeren; Stakeholdermanagement; Kennis en expertise up to date houden en delen met het team. Hier ga je werken Onze opdrachtgever, gevestigd in regio Amsterdam, is een innovatieve dienstverlener die zich richt op grote corporates in verschillende sectoren. Doordat je bij veel verschillende klanten aan de slag zal gaan is geen enkel project hetzelfde. De organisatie kenmerkt zich door hoge mate van professionaliteit en innovatieve oplossingen. In de rol van OutSystems developer zal jij verschillende grote klanten helpen om efficiënte OutSystems oplossingen te ontwikkelen en implementeren.

Bekijk vacature »

Medior/senior front end developer React Sportsoftw

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van onze stack; Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: 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 je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Senior Lead Front End Developer

Functieomschrijving Voor Stichting Waternet zijn wij op zoek naar een senior Lead Front End Developer. Binnen het DevOps team Online zijn we op zoek naar een Senior Lead Front End developer met kennis van toegankelijkheid. Deze developer zal zich bezighouden met development van webpaginas die in verbinding staan met systemen uit het back office. Taken Ontwerpen, ontwikkelen, implementeren, documenteren en beheren van webapplicaties in een Azure-omgeving Debuggen, analyseren en oplossen van problemen in de OTAPomgevingen Je participeert in het DevOpsTeam Online voor het verder uitwerken en implementeren van gebruikerswensen Je bent betrokken bij toegankelijkheid audits en het implementeren van WCAG

Bekijk vacature »

WordPress & Azure Developer

Dit ga je doen Zowel front- als back-end development aan de online website omgeving; Het up-to-date houden van alle WordPress-sites; Koppelingen maken tussen applicaties; Meedenken en adviseren over verbeteringen; Development door middel van WordPress, Javascript, HTML en CSS; Werken binnen Scrum/Agile team. Hier ga je werken Voor een grote overheidsinstelling in Den Haag zijn wij opzoek naar een WordPress developer, met kennis en ervaring op het gebied van Azure. De organisatie zit in een grote transitie waarbij de gehele website/online omgeving vernieuwd zal gaan worden. Binnen dit Scrum/Agile team ben je verantwoordelijk voor deze grote migratie/ombouw van de omgeving. De

Bekijk vacature »

Integratie Developer / Architect

Dit ga je doen Als Integratie Developer / Architect binnen deze organisatie krijg je echt de kans om impact te maken. De organisatie is groeiende maar houdt een corporate cultuur buiten de deur. Heb je een goede business case: zorg voor goede argumentatie en ga ervoor! Geen stroperig beslissingsproces dat jouw ideeën in de weg staat! Enkele van jouw taken: Je ontwerpt en ontwikkelt nieuwe integraties met behulp van interne tools (Boomi) of externe partners; Je vertaalt functionele specificaties naar technische oplossingen; Je denkt mee over strategische ontwikkelingen op het gebied van applicatie integratie; Je voert regie op leveranciers en

Bekijk vacature »

Full Stack .NET Developer

Dit ga je doen Als developer nieuwe gave features ontwikkelen; Werken met technieken als C#, Angular 12 en Javascript,; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken In een team van 7 professionals ben je als Full Stack .NET Developer verantwoordelijk voor het ontwikkelen van applicaties voor het grootste inhouse product: een applicatie voor alles omtrent hypotheken. De programmeertaal die je hierbij beheerst is C#. Wil je van meerwaarde

Bekijk vacature »

.NET developer

Functie Als .NET developer wordt jij onderdeel van ons ICT team. In dit multidisciplinaire team ben jij samen met onze senior .NET ontwikkelaar en medior .NET ontwikkelaar verantwoordelijk voor ons ERP systeem. In dit systeem (Navision) ga jij leren ontwikkelen. Wij bieden jou dan ook een gedegen opleiding aan, samen met de ondersteuning van onze Senior .NET developer. Daarnaast ga jij aan de slag met ons portaal geschreven in Sharepoint. Verder ben jij verantwoordelijk voor EDI verkeer en het ontwikkelen binnen het ERP systeem en andere toepassingen en rapportages. Van jou wordt verwacht dat jij het proces goed leert kennen

Bekijk vacature »

React developer Inhouse cloudplatform

Functie De functie: Als front-end developer kom je te werken naast 2 andere front-end/React developers, waaronder één senior. Een hele mooie kans dus om in korte tijd veel nieuwe kennis en ervaring op te doen. Ze hebben momenteel veel werk hierin en daarom willen ze het team graag uitbreiden. Het is van belang dat je, zeker gezien het vele thuiswerken, in ieder geval al een aantal projecten hebt gedaan in React. Taken waar je aan kunt denken zijn het ontwikkelen van client-applicaties o.b.v. HTML5, React en andere open standaarden. Ook ben je nauw betrokken bij het implementeren van designs o.b.v.

Bekijk vacature »

Front-end Developer

Gezellige team, passie en een groene toekomst! Lees hier de vacature van Front-end Developer bij All in Power! All in power heeft zich tot doel gesteld écht bij te dragen aan de energietransitie. Dit doen wij door de markt voor energie volledig op zijn kop te zetten. Producenten van schone (wind- of zonne-)energie verkopen via ons platform hun energie rechtstreeks aan gebruikers. Of dit nu huishoudens, bedrijven of bijvoorbeeld laadpalen zijn ons platform maakt het uitwisselen van energie mogelijk. Zo maken we de business case van onze klanten veel sterker en loont het om (meer) te investeren in vergroening voor

Bekijk vacature »

Medior .NET developer

Functie Jij gaat als Medior .NET ontwikkelaar aan de slag in ons scrumteam met 6 developers die gepassioneerd en actief bezig zijn om onze spelers kwalitatieve en mooie spelervaringen aan te bieden. Als medior .NET developer ga jij werken aan een technisch hoogwaardig platform welke bezoekerspieken verwerkt van tienduizenden tot honderdduizenden gebruikers per minuut! Ons scrumteam werkt in drie wekelijkse sprints en wij beginnen iedere ochtend met een stand-up. Jij werkt bij ons met C# .NET, .NET Core, React.JS, Xamarin, Azure, Docker en Kubernetes. Wij hechten enorm veel waarde aan het leveren van hoogwaardige en kwalitatieve code. Zodra jij de

Bekijk vacature »

.NET developer

Functie Als .NET developer start jij in een ontwikkelteam met 15 developers en twee testers. Samen zijn jullie verantwoordelijk voor financiële applicaties met meer dan 50.000 gebruikers. Een deel van het team is verantwoordelijk voor de webapplicaties van deze organisatie. Ook zijn er twee app ontwikkelaars werkzaam in het team die zich focussen op de mobiele applicatie. Als .NET ontwikkelaar ga jij aan de slag met de webapplicaties van deze organisatie. Hierbij maak jij o.a. gebruik van C# .NET, ASP.NET, T-SQL, Angular en TypeScript. De nadruk van jouw functie ligt wel op de backend van de applicatie. Wat jouw functie

Bekijk vacature »

Senior Javascript developer

Functie Het platform is gebouwd in een moderne JavaScript stack, die gebruikt maakt van:  React.js  Redux  TypeScript  Node.js  Google Cloud functions (node.js)  Semantic UI Alle code wordt getest en beoordeeld door collega developers. De continuous integration pipeline maakt het mogelijk om elke dag waarde te leveren aan hun klanten. Het ontwikkelproces is pragmatisch en gebaseerd op Scrum. Wat je zult doen: Ten eerste kun je nadrukkelijk jouw eigen stempel drukken op de technologie, het product en de cultuur van het bedrijf. Je bent bezig met het uitwerken van de architectuur van nieuwe functionaliteiten op

Bekijk vacature »

.NET Developer Shared Driving

Bedrijfsomschrijving Onze klant richt zich op het toegankelijker maken van steden, een fantastisch mooi streven. Hoe ze dat doen? Met eigen ontwikkelde software, waarmee vervoersmiddelen gedeeld kunnen worden. Deze inspirerende werkgever maakt een maatschappelijke impact en dat doen ze nu al zo'n 25 jaar! Het bedrijf is gevestigd in het centrum van Rotterdam en kent ongeveer zo'n 90 medewerkers. Het personeel is lekker gewoon gebleven! Iedereen kleedt zich zoals hij of zij dat zou willen en de sfeer is er erg fijn. Een leuke werkgever om voor te werken, en bovendien zijn er voor jou als Software Developer veel mooie

Bekijk vacature »

Medior Front end developer React

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor op de

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

22/11/2024 12:07:11
 
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.