• 29-03-2014, 17:30:45
    #1
    işçi ücreti hesaplama problemi var.

    1-30 haziran günlük ücreti 50 TL
    1-30 temmuz günlük ücreti 60 TL
    1-30 ağustos günlük ücreti 70 TL
    ...
    1-30 mart günlük ücreti 20 TL

    gibi ücretleri olan işçilerin

    10 haziran 24 ağustos arasındaki işçiye verilecek ücreti nasıl hesaplayabiliriz?

    Ücret bilgisi veritabanında ve strtotime ile kayıt ediliyor?
  • 29-03-2014, 19:32:09
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @nurettin; veritabanından örnek bi' kaydın resmini konuya ekleyebilir misin?
  • 29-03-2014, 21:09:12
    #3
    saintx adlı üyeden alıntı: mesajı görüntüle
    @nurettin; veritabanından örnek bi' kaydın resmini konuya ekleyebilir misin?
    Şu şekilde yapmıştım.

    CREATE TABLE IF NOT EXISTS `donemsel_fiyatlar` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `tarih_baslangic` int(11) NOT NULL,
      `tarih_bitis` int(11) NOT NULL,
      `is_id` int(11) NOT NULL,
      `tarih_ucret` decimal(8,2) NOT NULL DEFAULT '0.00',
      `aktif` int(11) NOT NULL DEFAULT '1',
      `kayit_tarih` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin5 AUTO_INCREMENT=5 ;
    
    --
    -- Tablo döküm verisi `donemsel_fiyatlar`
    --
    
    INSERT INTO `donemsel_fiyatlar` (`id`, `tarih_baslangic`, `tarih_bitis`, `is_id`, `tarih_ucret`, `aktif`, `kayit_tarih`) VALUES
    (1, 1396299600, 1398805200, 1, '150.00', 1, '2014-03-29 09:52:10'),
    (2, 1398891600, 1401483600, 1, '200.00', 1, '2014-03-29 09:52:31'),
    (3, 1401570000, 1404075600, 1, '300.00', 1, '2014-03-29 09:52:50'),
    (4, 1396299600, 1398805200, 11, '150.00', 1, '2014-03-29 10:06:44');
    is_id değeri önceden oluşturulmuş işler.

    Boya,ince işçilik vb.
  • 29-03-2014, 21:51:34
    #4
    @nurettin; hocam inceliyorum, kafam biraz dalgında çözümü bulmam biraz uzun sürecek galiba
  • 29-03-2014, 22:11:47
    #5
    saintx adlı üyeden alıntı: mesajı görüntüle
    @nurettin; hocam inceliyorum, kafam biraz dalgında çözümü bulmam biraz uzun sürecek galiba
    tamamdır.
    Teşekkurler
  • 30-03-2014, 18:44:58
    #6
    burada şunu düşündüm

    iş tarihinin başlangıç tarihini hangi tarih aralıgında bulundugunu hesaplanıp sonrası sonraki tarih ile bitiş arasında olmasını düşündüm.

    Buda biraz zor olacak gibi eğer 1 yıl seçilirse çok zor olabilir gibi geldi.
  • 30-03-2014, 22:20:24
    #7
    R10'dan banlı olan bir arkadaş konuyu görmüş yardımcı olmam için bana söyledi.

    <?php
    $ucretler = array(
    "2014-01"=>"10",
    "2014-02"=>"20",
    "2014-03"=>"30",
    "2014-04"=>"40",
    "2014-05"=>"50",
    "2014-06"=>"60",
    "2014-07"=>"70",
    "2014-08"=>"80",
    "2014-09"=>"90",
    "2014-10"=>"10",
    "2014-11"=>"11",
    "2014-12"=>"12"
    );
    
    
    $baslangic      = strtotime("2014-01-15");
    $sonlanis       = strtotime("2014-04-05");
    
    if($baslangic < $sonlanis)
    {
        $gunsaniye = 86400;
        
        $kacguncalismis = @floor(@intval($sonlanis-$baslangic) / $gunsaniye);
        
        /* 1 gun fazla vermek istersen floor yerine ceil kullan */
        
        $fastphp = 0;
        
        for($dongu=0; $dongu<=$kacguncalismis; $dongu++)
        {
            $tarih = $baslangic + ($dongu*$gunsaniye);
            $ucretdonem = @date("Y-m",$tarih);
            
            $ayingunsayisi = cal_days_in_month(CAL_GREGORIAN, date("n",$tarih), date("Y",$tarih));
            
            if(isset($ucretler[$ucretdonem]))
            {
                $gunlukalacagi = @($ucretler[$ucretdonem]/$ayingunsayisi);
                $fastphp = $fastphp + $gunlukalacagi;
            }
        }
        
        echo number_format($fastphp, 2, ',', '.')." TL";
        
    }
    
    ?>

    Bu yardımcı olabilirmiş. Benim php bilgim yok malesef.
  • 30-03-2014, 23:25:04
    #8
    blogunda ortalama ücreti hesaplıyor. buda ücret hesabında yanlış hesaplama yol açar.

    Hesaplamada gun * ogunkuucret olması gerekli.

    biraz basit gibi gibi gözüküyor ama karşamaşık bir yapı
  • 31-03-2014, 15:42:36
    #9
    Developer
    Tam olarak ne istediğiniz anlayamadım, zaten yapısı o şekilde ayın kaç günü olduğunu alır.

    ayın ücretini / kaç gün varsa ona böler günlük kazancı bulur ve gün gün hangi aydaysa ücretine dahil eder.