Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    265

    calcolo fine mese e scadenze

    Salve a tutti,
    sto realizzando un gestionale perla fatturazione della mia aziendina.
    Ormai ci siamo direi che è completo.
    Mi manca solo la gestione delle scadenze in base alle diverse modalità di pagamento (30,30/60, 120/180 ecc)

    Io ho creato nel db una tabella chiamata "pagamenti" con campi:
    descrizione (quindi per es: 30/60)
    nmesi (il numero di scadenze per es se il pagamento è 30/60 nmesi sarà 2)
    inizio (questo è un valore che mi indica da quale fine mese partire se è il fine mese corrente , o uno di quelli successivi, Nel caso del 30/60 sarà quindi 1 perchè il fine mese di partenza è quello corrente; fosse stato 90/120 sarebbe stato 3)

    dalla tabella fatture_clienti prendo la data di emissione della fattura.

    ora mi servirebbe una funzione EOM che dati come parametri la data della fattura e il campo "inizio" mi calcoli il fine mese esatto.

    Codice PHP:
    $data_corrente EOM($fattura->fields['data'],$pagamento->fields['inizio']); 
    successivamente avevo pensato di fare in ciclo for per il numero di scadenze in questo modo:

    Codice PHP:
    for ($i=2; $i<=$pagamento->fields['nmesi']; $i++) {
    $data_corrente = EOM(gomonth($data_corrente, 1))
    ?>
    [b]<? echo $data_corrente;?>:[/b] [i]<? echo $acconto?>[/i] <? }
    in cui gomonth è un altra funzione che calcola il fine mese successivo alla data di fine mese della prima scadenza che ho gia calcolato qualche riga + su.

    Il problema è che non riesco a capire il funzionamento delle date e non saprei come implementare queste due funzioncine, ci provo da 3 giorni e ho cercato ovunque!!!

    potrebbe aiutarmi qualcuno???

    grazie mille in anticipo a tutti quelli che ci proveranno

    myry

  2. #2
    Studiati questo codice:

    Codice PHP:
    <?php 

    function end_of_month($date$days) {
        
    $date   mktime(000date('n'$date), date('j'$date) + $daysdate('Y'$date));
        
    $date mktime(000date('n'$date) + 10date('Y'$date));
        return 
    $date;
    }

    $days 30;
    $date time();
    $expiry end_of_month($date$days);
    print(
    date('d/m/Y'$expiry));

    ?>

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    265

    umm

    quindi per il campo "inizio" non devo usare i mesi ma bensì il numero di giorni? ($days =30)
    cmq adesso la provo subito!!!
    grazie mille intanto!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    265

    umm

    possibile che mi esca una data del 1970????

    ho fatto cosi:

    Codice PHP:
     function EOM($date$days) { 
        
    $date   mktime(000date('n'$date), date('j'$date) + $daysdate('Y'$date)); 
        
    $date mktime(000date('n'$date) + 10date('Y'$date)); 
        return 
    $date

    e nella pagina:

    Codice PHP:
     $data_corrente EOM($fattura->fields['data'],30);
    print(
    date('d/m/Y'$data_corrente)); 
    e mi restituisce: 31/01/1970
    ma la data di inizio è 05/10/2008

    dove sbaglio O_o ?!?!?

  5. #5
    Stai passando una stringa ad una funzione che richiede uno unix timestamp.

    Ti suggerisci di ricominciare studiando il funzionamento di queste funzioni:

    http://www.php.net/date
    http://www.php.net/mktime

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    265

    no

    ma non passo una stringa, passo un campo di tipo data del db....ho gia letto le due funzioni sul manuale ma non riesco a capire come utilizzarle per fare quello che mi serve....

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    265

    ok

    utilizzando la funzione strtotime sul campo date del db la cosa sembra funzionare!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    265

    Febbraio

    Come mai mi salta completamente il mese di febbraio?

  9. #9

    Re: no

    Originariamente inviato da Myry..
    ma non passo una stringa
    Si, passi una stringa. Se non ne sei convinto, è sufficiente che applichi var_dump() alla variabile per scoprire che il tipo è string.

    Come da manuale, strtotime Parse about any English textual datetime description into a Unix timestamp

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    265

    si si

    infatti hai ragione,
    ho usato strtotime per trasformala e infatti funziona tutto!!
    L'unica è che quando arriva a febbraio me lo salta e mi mette il mese dopo, come mai??
    cosa posso fare?

    cmq sono una "lei" e grazie per l'aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.