- Beranda
- Komunitas
- Tech
- Website, Webmaster, Webdeveloper
<ASK> Logika dan Penghitungan pada PHP


TS
ar1246
<ASK> Logika dan Penghitungan pada PHP
Gan ane butuh bantuan
masalahnya ttg logika penghitungan pada php.
Yang bisa ntar ane kasih pulsa / transfer bwt beli es cendol.
PM in ke ane nmr HP agan.
Ntar ane reply dg penjelasan masalahnya.
Lagi bikin web reservasi.
Harga ada low season sama high season. Ane bingung pas perhitungan harga yang ada high season nya gan.
misal:
bulan mei ada high season tgl 10-15.
yg bingung
masalahnya ttg logika penghitungan pada php.
Yang bisa ntar ane kasih pulsa / transfer bwt beli es cendol.
PM in ke ane nmr HP agan.
Ntar ane reply dg penjelasan masalahnya.
Spoiler for case:
Lagi bikin web reservasi.
Harga ada low season sama high season. Ane bingung pas perhitungan harga yang ada high season nya gan.
misal:
bulan mei ada high season tgl 10-15.
Quote:
ada yg booking, cekin tgl 1 cekout tgl 5.
itumah kan tinggal cari jmlh harinya (out-in)
nah harganya tinggal $hari*$lowseason
itumah kan tinggal cari jmlh harinya (out-in)
nah harganya tinggal $hari*$lowseason
yg bingung
Quote:
jika ada yg booking ada pas high season
misal kita menandai hari high season sbg Event
nah bingung nih gimana kalo ada yg booking yg smuanya pada tgl high season dan jika ada yg low season nyebrang ke high season, ato bahkan misal booking dg cekin tgl 9 cekout tgl 17, berasri kan low high kmudian low lg
misal kita menandai hari high season sbg Event
nah bingung nih gimana kalo ada yg booking yg smuanya pada tgl high season dan jika ada yg low season nyebrang ke high season, ato bahkan misal booking dg cekin tgl 9 cekout tgl 17, berasri kan low high kmudian low lg
Spoiler for script ane:
PHP Code:
public function book($id = null) {
$this->layout = 'default_admin';
$this->loadModel('Room');
$this->loadModel('Event');
$rooms = $this->Room->find('list', array('fields' => 'Room.name'));
$this->set(compact('rooms'));
$this->OrderDetail->id = $id;
if (!$this->OrderDetail->exists()) {
throw new NotFoundException(__('Invalid user'));
}
if ($this->request->is('post') || $this->request->is('put')) {
$getRoom = $this->Room->find('first',
array('conditions' =>
array(
'id' => $this->request->data['OrderDetail']['room_id'],
)
)
);
$qty = $this->request->data['OrderDetail']['qty'];
$checkin = $this->request->data['OrderDetail']['checkin_date'];
$checkout = $this->request->data['OrderDetail']['checkout_date'];
$events = $this->Event->find('first', array(
'conditions'=>
array(
'Event.status'=>'0',
'AND' => array(
'
(
('."'".$checkin."'".' BETWEEN `open_season` AND `close_season`)
OR
('."'".$checkout."'".' BETWEEN `open_season` AND `close_season`)
)
OR
(
(close_season <= '."'".$checkout."'".' AND open_season >= '."'".$checkin."'".')
)
',
)
)
)
);
if(count($events) != 0){
$priceBeforeEvents = 0;
$priceOnEvents = 0;
$priceAfterEvents = 0;
//cekbeforeevent
if($checkin < $events['Event']['open_season']){
$startTimeStamp = strtotime($checkin);
$endTimeStamp = strtotime($events['Event']['open_season']);
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400; // 86400 seconds in one day
//and you might want to convert to integer
$numberDays = intval($numberDays);
if($numberDays == 0){
$numberDays = 1;
}else{
$numberDays = $numberDays;
}
$priceBeforeEvents = $numberDays * $getRoom['Room']['price_low'];
}
//cek on event
if($events['Event']['open_season'] < $checkout){
$startTimeStamp = strtotime($events['Event']['open_season']);
$endTimeStamp = strtotime($events['Event']['close_season']);
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400; // 86400 seconds in one day
//and you might want to convert to integer
$numberDays = intval($numberDays);
if($numberDays == 0){
$numberDays = 1;
}else{
$numberDays = $numberDays;
}
$priceOnEvents = $numberDays * $getRoom['Room']['price_high'];
}
if($events['Event']['close_season'] < $checkout){
$startTimeStamp = strtotime($events['Event']['close_season']);
$endTimeStamp = strtotime($checkout);
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400; // 86400 seconds in one day
//and you might want to convert to integer
$numberDays = intval($numberDays);
if($numberDays == 0){
$numberDays = 1;
}else{
$numberDays = $numberDays;
}
$priceAfterEvents = $numberDays * $getRoom['Room']['price_low'];
}
$priceTotal = $priceBeforeEvents + $priceAfterEvents + $priceOnEvents;
}else{
$startTimeStamp = strtotime($checkin);
$endTimeStamp = strtotime($checkout);
$timeDiff = abs($endTimeStamp - $startTimeStamp);
$numberDays = $timeDiff/86400; // 86400 seconds in one day
//and you might want to convert to integer
$numberDays = intval($numberDays);
if($numberDays == 0){
$numberDays = 1;
}else{
$numberDays = $numberDays;
}
$priceTotal = $numberDays * $getRoom['Room']['price_low'];
}
$dp = ($priceTotal*50/100) * $qty ;
$harga = $priceTotal * $qty;
$this->request->data['OrderDetail']['price'] = $dp;
$this->request->data['OrderDetail']['price_normal'] = $harga;
if ($this->OrderDetail->save($this->request->data)) {
$this->Session->setFlash(__('The Order has been saved'));
return $this->redirect(array('action' => 'edit',$this->request->data['OrderDetail']['order_id']));
}
$this->Session->setFlash(__('The Order could not be saved. Please, try again.'));
} else {
$this->request->data = $this->OrderDetail->read(null, $id);
}
}
Diubah oleh ar1246 21-04-2014 10:39
0
1.4K
Kutip
13
Balasan


Komentar yang asik ya
Urutan
Terbaru
Terlama


Komentar yang asik ya
Komunitas Pilihan