Scadenziario fatture

Discussioni sulle caratteristiche di database
Rispondi
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Scadenziario fatture

Messaggio da charlie »

Ho colto l'invito di @Paolo_668 in questa discussione di Calc viewtopic.php?f=9&t=7866 per fare un esempio di come si potrebbe impostare uno scadenziario in Base.
E' solo una ipotesi di lavoro che attende conferme, critiche e consigli. Il lavoro potrà proseguire solo se può interessare qualcuno.
Allegati
Scadenziario.odb
(14.69 KiB) Scaricato 515 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Paolo_668
Messaggi: 67
Iscritto il: martedì 9 giugno 2015, 12:14

Re: Scadenziario fatture

Messaggio da Paolo_668 »

Accidenti, come pagina del protocollo fatture è davvero bella!
Sarebbe bellissimo riuscire ad andare avanti, ma io non so come.
Mi consigli qualche tutorial di base su Base, così tra qualche anno lo faccio anche io?

P_668
Open Office 4.1.1 su Windows 7 - 64bit
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Scadenziario fatture

Messaggio da charlie »

Ciao, la sezione Tutorial del forum è ricca di segnalazioni e link di argomenti che si occupano di Base.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Scadenziario fatture

Messaggio da charlie »

Volendo proseguire con il progetto si pone il problema di fissare le scadenze dei pagamenti in base al tipo di pagamento prescelto.
Per far questo occorre trovare il modo di aggiungere 1 o più mesi alla data di emissione della fattura. Sfortunatamente con il motore HSQLDB 1.8 incorporato in Base non è utilizzabile la funzione DATEADD. Inoltre, le scadenze dei pagamenti sono di solito a fine mese e quindi serve anche trovare la data corrispondente alla fine del mese. Anche questa funzione, LAST_DAY, non è disponibile.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Scadenziario fatture

Messaggio da charlie »

Per surrogare DATEADD, si può utilizzare questo codice:

Codice: Seleziona tutto

-- codice per aggiungere 1 mese ad una data
SELECT
ID,
CAST(  -- CAST("...." AS Date) trasforma un tipo 'striga' in un tipo 'data' per l'utilizzo successivo
CASE 
   WHEN
      MONTH("Date")=12      -- se il mese è = 12 il mese successivo sarà 1
   THEN
      YEAR("Date")+1 || '-01-' || RIGHT('0' || DAY("Date"), 2)
   WHEN
      MONTH("Date")=1 AND MOD(YEAR("Date"), 4) <> 0   -- se il mese = 2 e l'anno non è bisestile (max 28 giorni)
   THEN
      YEAR("Date") || '-0' ||
      CASEWHEN(DAY("Date") <= 28,
      '2-' || RIGHT('0' || DAY("Date"), 2),
      '3-0' || DAY("Date")-28)   
   WHEN
      MONTH("Date")=1 AND MOD(YEAR("Date"), 4) = 0    -- se il mese = 2 e l'anno è bisestile (max 29 giorni)
   THEN   
      YEAR("Date") || '-0' ||
      CASEWHEN(DAY("Date") <= 29,
      '2-' || RIGHT('0' || DAY("Date"), 2),
      '3-0' || DAY("Date")-29)   
   WHEN
      MONTH("Date")=3 or MONTH("Date")=5 or MONTH("Date")=8 or MONTH("Date")=10      -- se il mese = 3 o 5 o 8 o 10, il mese successivo ha al max 30 gg
   THEN
      YEAR("Date") || '-' ||
      CASEWHEN(DAY("Date") <= 30,
      RIGHT('0' || MONTH("Date")+1, 2) || '-' || RIGHT('0' || DAY("Date"), 2),
      RIGHT('0' || MONTH("Date")+2, 2) || '-01')
   ELSE                                                   -- se il mese = 2, 4, 6, 7, 9 o 11, il mese successivo ha 30 gg
      YEAR("Date") || '-' || RIGHT('0' || MONTH("Date")+1, 2) || '-' || RIGHT('0' || DAY("Date"), 2)
end
AS DATE)
AS "Date"
FROM "miaTabella"
N.B. le date sono scritte nella notazione AAAA-MM-GG
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Scadenziario fatture

Messaggio da charlie »

Questo, invece il codice per individuare la fine del mese, al posto di LAST_DAY:

Codice: Seleziona tutto

-- codice per trovare l'ultimo giorno del mese
SELECT
ID, 
   CAST( -- CAST("...." AS Date) trasforma un tipo 'striga' in un tipo 'data' per l'utilizzo successivo
      YEAR( "Date" ) || '-' || RIGHT('0'|| MONTH( "Date" ), 2) || 
         CASE WHEN MONTH( "Date" ) IN (4, 6, 9, 11) -- Se il mese = 4, 6, 9 o 11, il mese ha 30 gg  
            THEN '-30' 
         WHEN MONTH( "Date" ) IN (1, 3, 5, 7, 8, 10, 12)  -- Se il mese = 1, 3, 5, 7, 8, 10 o 12, il mese ha 31 gg 
            THEN '-31' 
         WHEN MOD(YEAR("Date"), 400)=0 OR (MOD( YEAR( "Date" ), 100 ) <> 0 AND MOD(Year("Date"),4) = 0) -- se il mese = 2 e l'anno è bisestile
            THEN '-29'
         ELSE '-28' -- se l'anno non è bisestile
         END 
      AS DATE 
      ) "Date" 
FROM "miaTabella"
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
gioca
Messaggi: 68
Iscritto il: sabato 11 aprile 2015, 17:19

Re: Scadenziario fatture

Messaggio da gioca »

sarebbe molto bello riuscire a farlo in base...purtroppo io non ci riuscirei..
OpenOffice 4.1.1 su Windows Vista
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Scadenziario fatture

Messaggio da charlie »

Io penso di riuscirci, ma ho bisogno di conoscere quali sono le esigenze.
Spero fra non molto di postare un esempio concreto.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Paolo_668
Messaggi: 67
Iscritto il: martedì 9 giugno 2015, 12:14

Re: Scadenziario fatture

Messaggio da Paolo_668 »

Ciao Charlie,
le mie esigenze sono pìù o meno quelle che puoi desumere dal file calc che avevo fatto.
Data una fattura e un tipo di pagamento, voglio sapere cosa devo pagare e quando.
Una fattura implica un numero di pagamenti mensili che va da uno a quattro, a seconda del tipo di pagamento.
A me non capita di avere un numero maggiore di rate.

Un esempio è una fattura con pagamenti a 30/60/90 gg dffm.
In questo caso il primo pagamento avviene 30 giorni dopo l'ultimo giorno del mese nel quale è stata emessa la fattura.
"30 giorni" è un modo di dire convenzionale. I mesi possono avere anche 31 oppure 28 giorni.
Il pagamento avviene in pratica l'ultimo giorno del mese successivo al mese nel quale è stata emessa la fattura.

La gran parte dei pagamenti è quindi identificata :
1_dal numero di rate (per adesso facciamo al massimo quattro o se preferisci, quante vuoi).
2_dal numero di mesi che passano tra la fine del mese di emissione della fattura e la prima rata.
NOTA: NEL CASO DEL PAGAMENTO dffm, IL NUMERO DI MESI CHE PASSA E' UGUALE A ZERO.
3_importo: a me capitano sempre rate di uguale importo, e si può iniziare così.
Considera che Gioca aveva anche altre esigenze, (prima rata IVA) che ti esporrà.

Deve poi essere possibile impostare delle scadenze libere, perchè non puoi prevedere nel tuo programma tutti i pagamenti possibili e immaginabili.

Non so se quello che ho scritto ti possa servire o ti sia già noto, ma lo ho scritto con piacere, perchè stai facendo quello che per me, da fuori, è un lavoraccio! :bravo:
P_668
Open Office 4.1.1 su Windows 7 - 64bit
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Scadenziario fatture

Messaggio da charlie »

Ecco il mio lavoro. Più avanti fornirò le spiegazioni d'uso.
Attendo domande, critiche e consigli.
Allegati
Scadenziario_1.odb
(18.92 KiB) Scaricato 209 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Paolo_668
Messaggi: 67
Iscritto il: martedì 9 giugno 2015, 12:14

Re: Scadenziario fatture

Messaggio da Paolo_668 »

ok, Charlie vedo che hai fatto l'archivio delle fatture da pagare,
e vedo anche che stai cominciando a definire i vari tipi di pagamento.
Per i tipi di pagamento più diffusi, guarda la scelta sul mio foglietto di calcolo.
Vedo anche che selezionando una fattura, posso vedere il suo stato, ovvero quali sono le sue scadenze e se sono state pagate oppure no.

Forse ora per te arriva il momento più difficile :fist:

Io vorrei che tutt le scadenze di tutte le fatture fossero allineate in verticale , ordinate per data crescente
mi piacerebbe avere una cosa come quella che ottieni nella pagina "lista scadenze" del mio scadenziario calc.

Ogni mese io voglio sapere, ogni giorno, chi devo pagare e quando.
Voglio selezionare un mese, non una fattura.
Nell'archivio fatture che hai fatto, sarebbe poi bello avere un semaforo verde che ti avvisa che la fattura è stata pagata del tutto.
Insomma, guarda il mio foglio di calcolo e fallo un po' meno poveraccio!
Grazie. :bravo:
Open Office 4.1.1 su Windows 7 - 64bit
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Scadenziario fatture

Messaggio da charlie »

Per i tipi di pagamento ho aggiunto un formulario apposito per inserirne di nuovi autonomamete (ma non si può andare oltre i 90 giorni senza modificare tutto il database).
Per il resto vedremo, ma i semafori no: Base è una cosa seria :lol:.
Allegati
Scadenziario_2.odb
(35.17 KiB) Scaricato 250 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Scadenziario fatture

Messaggio da charlie »

Alcune spiegazioni per chi volesse fare modifiche:
  • Ci sono diverse query (quelle con un numero nel nome) che servono a calcolare le scadenze delle rate applicando il codice SQL già descritto in precedenza
  • Ci sono delle "viste" su alcune query: servono ad evitare i messagi di errore quando una query lavora sul risultato di un'altra
  • Il cuore del database sono le query Protocollo e Scadenze. In quest'ultima ho fatto molto uso di CASEWHEN e di CASE WHEN (la sintassi è diversa) per la visualizzazione dei soli campi che mi interessavano nelle varie maschere del formulario Protocollo
  • Questo è stato realizzato tutto in una sola schermata in quanto lavoro con un display a 27 pollici. Volendo si può dividere in più formulari e fare meno dei pulsanti di aggiornamento (chiudendo un formulario per aprirne un altro l'aggiornamento diventa automatico).
  • Per l'aggiornamento si potrebbe adottare qualche macro al posto dei pulsanti, ma ho preferito non farlo
  • Un problema irrisolto: nell'ultima riga della maschera di destra si spuntano le rate pagate e, con il pulsante apposito, si aggiornano le didascalie sprastanti con "pagata".
    Non sono riuscito a non visualizzare le caselle di spunta per le scadenze non interessate (es: le caselle 30-60 e 90 per il pagamento RD fm)
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Paolo_668
Messaggi: 67
Iscritto il: martedì 9 giugno 2015, 12:14

Re: Scadenziario fatture

Messaggio da Paolo_668 »

Ciao Charlie,
ho visto il formulario per l'inserzione di nuovi tipi di pagamento ed è molto bello.
Addirittura si presta a pagamenti bimestrali, ad esempio.
A 180 giorni bisogna poterci arrivare, e questo quano avrai tempo lo farai.
Certo è tutto più difficile che in calc.
Tu pensa che io mi arrangiavo con la griglia che per curiosità ti allego.
Inoltre in calc, le formule che ti occorrono ci sono già, senza crearle.
Quando parlavo di semaforo, mi sono espresso impropriamente.
Nel mio file calc, nel protocollo, nella riga di ogni fattura, c'era una cella nella quale, quando la fattura era interamente pagata, compariva la parola "pagata" su sfondo verde,
tranquillizzante...
Mi dispiace di non poterti aiutare maggiormente.
Io credo che il file calc che ho fatto rappresenti al meglio le esigenze per questo genere di applicazione.
Infatti, a parte Gioca, nessuno mi ha chiesto altro che non fosse cio' che era contenuto in quel foglietto di calcolo..
Credo che però con Base si possano soddisfare le stesse esigenze ma in modo molto più bello, più sicuro e più stabile.
Mi rendo conto che quando ti dico: "guarda bene quello che ho fatto con quattro formule con calc e rifallo pari pari con base" è un poco come se ti dicessi di fare con un rastrello quello che io ho fatto con un badile, e quindi mi sento a disagio, nel farti degli appunti. :?
Allegati
tipi_pagamento.jpg
Open Office 4.1.1 su Windows 7 - 64bit
gioca
Messaggi: 68
Iscritto il: sabato 11 aprile 2015, 17:19

Re: Scadenziario fatture

Messaggio da gioca »

Buon pomeriggio a tutti. Ho appena scaricato il db e mi sembra molto carino. Ci do un'occhiata e vedo, secondo le mie esigenze,se va bene... Comunque, ottimo lavoro...
OpenOffice 4.1.1 su Windows Vista
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8804
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Scadenziario fatture

Messaggio da charlie »

Paolo_668 ha scritto:A 180 giorni bisogna poterci arrivare, e questo quano avrai tempo lo farai.
Credo di aver messo tutto perché chi è interessato ci arrivi da solo, basta copiare, incollare ed adattare qualche riga di codice. Poi occorre aggiungere dei campi ai formulari (può essere più conveniente rifarli).
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rispondi