Lista da selezione utente su maschera

di il
23 risposte

Lista da selezione utente su maschera

Salve a tutti,

molto probabilmente la mia è una richiesta super banale, ma essendo alle prime armi per me non risulta essere così.

Per farvela breve, ho una tabella denominata “T_Scadenze” che non è altro che un elenco di fatture da pagare con relativi dati (fornitore, data scadenza, importo, etc etc).

Io avrei bisogno di creare una maschera (pensavo ad una maschera continua con magari dei filtri utili in alto) che permettesse all'utente di poter selezionare alcune fatture dall'elenco filtrato.

Tali fatture selezionate dovrebbero poi diventare parte di un piano di rientro, ovvero essere “accorpate” per importo e poi ridivise in tot rate (numero di rate, importo e data scadenza di ciascuna rata saranno scelte dall'utente magari nel passo appena successivo).

Quindi alla fine della fiera le fatture “iniziali” selezionate dovrebbero essere impostate come pagate (nella tabella ho un campo si/no che gestisce tale evenienza), e dovrebbero essere creati dei nuovi record (tanti quante sono le rate scelte dall'utente) nella tabella.

Mi suggerireste, per piacere, un modo intelligente per poter fare tutto ciò?

Spero di essere stato chiaro nella spiegazione, altrimenti sono a disposizione per chiarimenti.

Grazie mille in anticipo

23 Risposte

  • Re: Lista da selezione utente su maschera

    16/11/2023 - DrJack89 ha scritto:


    ho una tabella denominata “T_Scadenze” che non è altro che un elenco di fatture da pagare con relativi dati

    Perchè hai una TABELLA a parte? Non ti servi di una query che prende in considerazione tutte le Fatture, dalle quali filtri quelle NON PAGATE (usando per esempio una checkbox)?

    16/11/2023 - DrJack89 ha scritto:


    Tali fatture selezionate dovrebbero poi diventare parte di un piano di rientro, ovvero essere “accorpate” per importo e poi ridivise in tot rate (numero di rate, importo e data scadenza di ciascuna rata saranno scelte dall'utente magari nel passo appena successivo).

    Potresti aggiungere una ulteriore checkbox da far interagire con l'utente.

    Per tutto il resto del discorso, non è chiaro.

  • Re: Lista da selezione utente su maschera

    Innanzitutto grazie per la risposta quasi immediata.

    16/11/2023 - OsvaldoLaviosa ha scritto:


    Perchè hai una TABELLA a parte? Non ti servi di una query che prende in considerazione tutte le Fatture, dalle quali filtri quelle NON PAGATE (usando per esempio una checkbox)?

    Non ho una tabella a parte, facevo riferimento alla tabella per spiegare la struttura. Sì, direi che una query filtrando le fatture non pagate sia la scelta più giusta da dare in pasto alla maschera.

    16/11/2023 - OsvaldoLaviosa ha scritto:


    Potresti aggiungere una ulteriore checkbox da far interagire con l'utente.

    Quindi la soluzione potrebbe essere di aggiungere un ulteriore campo “si/no” alla tabella?

    16/11/2023 - OsvaldoLaviosa ha scritto:


    Per tutto il resto del discorso, non è chiaro.

    Ok, provo a spiegarlo meglio.

    Alcune di queste fatture non saranno pagate in maniera diretta, ma si trasformeranno in una somma da rateizzare nel tempo.

    Quindi il software dovrebbe essere in grado di impostare come "pagate" le fatture selezionate, e generare (sempre nella tabella “T_Scadenze”) altre nuove scadenze pari al numero di rate scelte dall'utente per “spalmare” il pagamento.

  • Re: Lista da selezione utente su maschera

    Potresti elencare i nomi propri di tutti i campi della tabella? Poi spiega (magari con un esempio) quello che vorresti fare usando i nomi propri.

  • Re: Lista da selezione utente su maschera

    Buongiorno,

    ecco la visualizzazione struttura della tabella “T_Scadenze”:

    Ciò che voglio fare detto terra terra è selezionare alcuni record di questa tabella (che abbiano IDLocale uguale e IDFornitore uguali, impostarli con il campo Pagata su sì e contestualmente creare dei nuovi record sempre nella stessa tabella che abbiano:

    • IDScadenza: automatico
    • IDLocale: come i record selezionati nel passaggio precedente
    • IDCategoria: non è fondamentale, problema “secondario”
    • IDFornitore: come i record selezionati nel passaggio precedente
    • Numero_FT: vorrei creare un qualcosa tipo algoritmo che imposti un nome del tipo [locale_fornitore_rata_N]
    • Data_FT: data in cui viene svolta questa operazione (quindi date() ?)
    • Scadenza_FT: ciascun nuovo record deve avere la sua. Per esempio, come se fosse una sorta di finanziamento, una scadenza ogni fine mese (se faccio il piano oggi, la rata n°1 deve scadere il 31/12, la seconda il 01/01/24, e così via). Ma vorrei che fosse l'utente a poter scegliere l'intervallo delle scadenze (ogni mese, ogni 2 mesi, ogni 3 mesi..)
    • Imponibile e ToT_FT: ad esempio, se le fatture selezionate in precedenza, danno come somma 500€ e ho scelto 5 rate, qui dovrei trovare 100€ per ciascun nuovo record (ma vorrei comunque dare all'utente la possibilità di personalizzare gli importi)
    • Pagata: impostata su "no"
    • Residuo: uguale a ToT_FT
    • Il resto non sono campi importanti e possono essere ignorati

    Grazie

  • Re: Lista da selezione utente su maschera

    Mumble mumble…ci credi che non riesco ancora ad afferrare il tuo contesto logico/professionale? Proseguo con altre (per me) elementari domande:

    1. Il nome tabella T_Scadenze mi depista molto le idee. Perchè non si chiama Fatture?
    2. FT cosa significa?
    3. Il campo Numero_FT se è frutto di calcolo/algoritmo…non deve essere un campo di tabella, piuttosto il ricavato da un campo aggiunto in una query.
    4. I campi Scademza_FT, Imponibile, Residuo…non capisco il significato. Se sono frutto di calcolo, devi delegare questo compito a una query.

    Qualcosa mi dice che hai bisogno di strutturare questi tuoi dati su più tabelle…ma continua a non essere chiaro il contesto generale.

    Fai un paio di esempi pratici (scusa la mia rinomata durezza di comprendonio).

  • Re: Lista da selezione utente su maschera

    Sono d'accordo con Osvaldo. Devi creare un tabella fatture cui associare tutti i dati relativi ad una fattura, tra cui anche la scadenza.

  • Re: Lista da selezione utente su maschera

    Buonasera..

    17/11/2023 - OsvaldoLaviosa ha scritto:


    Il nome tabella T_Scadenze mi depista molto le idee. Perchè non si chiama Fatture?

    Si chiama scadenze perché è una tabella di scadenze, e sta all'interno di un file che nasce come Scadenzario (banalmente, apro e vedo quali fornitori/utenze/etc devo pagare in ordine di scadenza più ravvicinata).

    17/11/2023 - OsvaldoLaviosa ha scritto:


    FT cosa significa?

    FT = Fattura

    17/11/2023 - OsvaldoLaviosa ha scritto:


    Il campo Numero_FT se è frutto di calcolo/algoritmo…non deve essere un campo di tabella, piuttosto il ricavato da un campo aggiunto in una query.

    No, il campo Numero_FT è un campo popolato dall'utente in ogni caso (o comunque importato tramite file Excel). Vorrei solo semplificargli la vita nel caso generi delle "rateizzazioni automatiche"

    17/11/2023 - OsvaldoLaviosa ha scritto:


    I campi Scademza_FT, Imponibile, Residuo…non capisco il significato. Se sono frutto di calcolo, devi delegare questo compito a una query.

    Stesso discorso per questi altri campi. Sono tutti popolati dall'utente, tranne “residuo” che serve a calcolare gli importi residui (appunto) nel caso avvengano pagamenti parziali che lascino tale fattura scoperta. In altre parole il campo “residuo” all'inizio viene impostato come Tot_FT (ovvero TOTALE DELLA FATTURA DA PAGARE) in quanto in fase di creazione della fattura/scadenza risulterà ancora l'importo intero da pagare. Man mano che i pagamenti (che vengono salvati in un altra tabella collegata) vengono effettuati, ToT_FT non si modifica, mentre “residuo” sì, scalando dal totale da pagare l'importo appena pagato (questo viene fatto attraverso una query).

    Provo a spiegare il procedimento in maniera proprio banale con dei passaggi:

    1. in data 17/11 mi arriva una fattura (numero A1B2) da pagare dall'azienda AAA di un importo pari a 100€ + iva (22%) con scadenza a fine mese.
    2. Un utente (tramite maschera apposita) aggiunge i dati di questa fattura appena ricevuta, in particolare:
      1. IDLocale - scelgo il locale a cui è arrivata la fattura (ne ho 20, supponiamo si chiami MioLocale);
      2. IDCategoria - dipende dalla tipologia della fattura (merci, servizi, etc) ma non è importante in questo momento come detto in precedenza
      3. IDFornitore - ID corrispondente all'azienda “AAA”
      4. Numero FT - A1B2
      5. Data_FT - 17/11/23
      6. Scadenza_FT - 30/11/23
      7. Imponibile - 100€
      8. ToT_FT - 122€ (ovvero 100€ imponibile + 22€ iva)
      9. Pagata - non è un campo gestito dall'utente che inserisce i dati, ma per ovvi motivi i nuovi record vengono salvati con tale campo impostato su NO
      10. Residuo - 122€
      11. gli altri campi non sono importanti in questo contesto
    3. Salvo e creo quindi nuovo record
    4. in data 22/11 effettuo pagamento relativo a tale fattura di 52€ (lo registro in un'altra maschera relativa ad un'altra tabella denominata “T_Pagamenti” che tiene traccia di tutti i pagamenti che eseguo)
    5. Tramite query trovo l'ID di quella fattura/scadenza e aggiorno il relativo campo “Residuo” che dunque diventerà pari a 70€ (122€ - 52€)
    6. in data 23/11 mi arriva una fattura (numero C3D4) da pagare dall'azienda AAA di un importo pari a 200€ + iva (22%) con scadenza sempre a fine mese.
    7. Ripeto azioni nel passaggio 2 (ovviamente cambiando i dati specifici)
    8. Supponiamo che, per X motivi, non riesca a pagare né i restanti 70€ della fattura/scadenza A1B2 né i 244€ della fattura/scadenza C3D4 entro il 31/11 e che quindi mi metta d'accordo con l'azienda AAA per fare un pagamento rateizzato della somma totale rimanente (ovvero 314€).
    9. A questo punto nasce la mia richiesta iniziale, ovvero:
    10. Tramite maschera apposita, l'utente dovrebbe poter selezionare i due record relativi alle due fatture/scadenze A1B2 e C3D4.
    11. Il programma a questo punto dovrebbe chiedere all'utente in quante rate suddividere tale pagamento ( e supponiamo per esempio che l'utente scelga 4) e la data di scadenza di ciascuna rata (supponiamo scelga scadenza mensile).
    12. Contestualmente i due record selezionati in precedenza devono essere “azzerati” nel campo residuo e impostati nel campo “pagata” su SI
    13. Dopo la conferma da parte dell'utente, il software dovrebbe creare 4 nuovi record che abbiano tali caratteristiche:
      1. IDLocale - MioLocale
      2. IDCategoria - dipende dalla tipologia della fattura (merci, servizi, etc) ma non è importante in questo momento come detto in precedenza
      3. IDFornitore - ID corrispondente all'azienda “AAA”
      4. Numero FT - impostata come MioLocale_AAA_Rata_1 (MioLocale_AAA_Rata_2/MioLocale_AAA_Rata_3/MioLocale_AAA_Rata_4)
      5. Data_FT - data nella quale l'utente svolge questa operazione
      6. Scadenza_FT - primo record 31/12/23 / secondo record 31/01/24 / terzo record 29/02/24 / quarto record 31/03/24
      7. Imponibile - in questo caso metto l'imponibile uguale al ToT_FT in quanto sarebbe impossibile scorporare l'IVA rimasta e isolarla, ma non è un problema
      8. ToT_FT - 78,5€ per tutti e quattro i record (ovvero 314€ diviso 4 rate). Ma vorrei che l'utente potesse vedere gli importi prima di dare l'ok ed eventualmente personalizzarli
      9. Pagata - NO
      10. Residuo - 78,5€ per tutti e quattro i record
      11. gli altri campi non sono importanti in questo contesto

    Spero di aver chiarito un bel po' di dubbi ora.. 

    Grazie sempre

  • Re: Lista da selezione utente su maschera

    Ho la sensazione che tu confondi il concetto di Fattura con quello di Scadenza. Se decidi di rateizzare, allora per una stessa Fattura avrai molte (in linea generale) Scadenze. Questo ti deve far capire che hai bisogno di 2 tabelle relazionate Fatture uno-a-molti Scadenze.
    Di conseguenza anche tutto il ragionamento riguardo al Residuo cambia in funzione delle molte Scadenze da onorare.

  • Re: Lista da selezione utente su maschera

    17/11/2023 - OsvaldoLaviosa ha scritto:


    Ho la sensazione che tu confondi il concetto di Fattura con quello di Scadenza. Se decidi di rateizzare, allora per una stessa Fattura avrai molte (in linea generale) Scadenze. Questo ti deve far capire che hai bisogno di 2 tabelle relazionate Fatture uno-a-molti Scadenze.
    Di conseguenza anche tutto il ragionamento riguardo al Residuo cambia in funzione delle molte Scadenze da onorare.

    Non ho la necessità di distinguere le due cose. Per me quella che chiamo “fattura” o “scadenza” è un banale importo da pagare entro una certa data.

    Rateizzare significa, per me, creare più importi da pagare SEPARATI e non mi importa nulla che siano collegati alla “fattura madre”. L’importante è ritrovarmi tali somme nei report “importi da pagare”. È molto più semplice di come sembra… forse non riesco proprio a spiegarmi? :D

  • Re: Lista da selezione utente su maschera

    17/11/2023 - DrJack89 ha scritto:


    Tramite query trovo l'ID di quella fattura/scadenza e aggiorno il relativo campo “Residuo” che dunque diventerà pari a 70€ (122€ - 52€)

    Perché?!?

    Cercavi una soluzione intelligente? Beh, un campo nella tabella scadenze dove inserire un pagamento parziale è poco intelligente: se su una fattura di 100 euro paghi 30 euro il 10/1/aaaa, 20 euro il 4/3/aaaa, il 5/4/aaaa con nota di credito di 5 euro e 45 euro al 7/7/aaaa come fai a tenerne traccia?

    Oppure: hai le fatture dalla alla per 1000 euro e paghi con 5 cambiali una al mese…. Come ne tieni traccia?

    Una cambiale torna indietro, devi stornare l'importo? Meglio stornare la registrazione e far fare i conti al db tramite query.

    Credo che sia da rivedere la logica che stai usando.

    Per quello che hai chiesto devi creare una rimodulazione di scadenze, chiudendo le fatture interessate dallo scadenziario e contestualmente riaprire le scadenze col nr documento di rateizzazione.

    All'emissione fattura ti crei lo scadenziario

    Idscadenziario, descrizione (fattura fornitore xy), Fornitore, nrdoc(numero fattura) datascad, importodare (zero), importoavere (totale fattura).

    Al pagamento

    1. Con 3 effetti

    Idscadenziario, descrizione(pagate con a/b ft 1, 5, 6 fornitore xy), Fornitore, nrdoc(numero assegno, riba o null), datascad, importodare (totale effetto), importoavere (zero).

    Ripetere per gli altri due effetti

    2. Contanti

    Idem come sopra nrdoc (null) descrizione (pagato contanti ft 1, 2, 5)

    Quando filtri per fornitore avrai le scadenze su importoavere e come descrizione il nr fattura

    Su importodare avrai gli importi pagati e su descrizione le fatture pagate e in che modo.

    Se storni un assegno non devi scrivere nulla su residuo. Il saldo da pagare lo avrai dai totali dare e avere.

    Questo e un rattoppo per come hai previsto tu la gestione delle scadenze e dei relativi pagamenti.

    Ovviamente il ciclo attivo è lo stesso ma invertito (fatture in dare e incassi in avere)

    Le note di credito passive (fornitori) avranno l'importo in dare, per quelle non serve il movimento in avere perché va a scalare il totale da pagare (le nc è già come un pagamento) (incasso nel ciclo attivo).

  • Re: Lista da selezione utente su maschera

    17/11/2023 - DrJack89 ha scritto:


    Non ho la necessità di distinguere le due cose. Per me quella che chiamo “fattura” o “scadenza” è un banale importo da pagare entro una certa data.

    Ascolta bene i consigli e le osservazioni fatte. Fossi in te rivedrei la struttura del db.

  • Re: Lista da selezione utente su maschera

    17/11/2023 - sihsandrea ha scritto:


    Perché?!?

    Cercavi una soluzione intelligente? Beh, un campo nella tabella scadenze dove inserire un pagamento parziale è poco intelligente: se su una fattura di 100 euro paghi 30 euro il 10/1/aaaa, 20 euro il 4/3/aaaa, il 5/4/aaaa con nota di credito di 5 euro e 45 euro al 7/7/aaaa come fai a tenerne traccia?

    I pagamenti vengono registrati in un'altra tabella (che ha la sua maschera) e posso tenerne traccia lì. Ogni volta che eseguo, cancello, modifico o qualunque altra operazione faccio su un pagamento, parte una query che modifica il campo "residuo" della scadenza relativa a quella operazione di pagamento.

    18/11/2023 - Antony73 ha scritto:


    17/11/2023 - DrJack89 ha scritto:


    Non ho la necessità di distinguere le due cose. Per me quella che chiamo “fattura” o “scadenza” è un banale importo da pagare entro una certa data.

    Ascolta bene i consigli e le osservazioni fatte. Fossi in te rivedrei la struttura del db.

    Non ho modo di modificare la struttura del db in quanto ho 300k di record salvati dentro esso.

    Ripeto, la mia è una richiesta “semplice” che secondo me non è arrivata ben chiara perché mi sono spiegato male (e secondo me non dovevo dirvi che si tratta di fatture, perché la cosa vi porta fuori strada). Vediamola come record:

    1. Seleziono alcuni record da un elenco 
    2. Scelgo quante rate fare e importo di ciascun record
    3. Creo nuovi record e “chiudo” i precedentemente selezionati.

    Grazie :)

  • Re: Lista da selezione utente su maschera

    18/11/2023 - DrJack89 ha scritto:


    • Seleziono alcuni record da un elenco 
    • Scelgo quante rate fare e importo di ciascun record
    • Creo nuovi record e “chiudo” i precedentemente selezionati.

    17/11/2023 - sihsandrea ha scritto:


    Per quello che hai chiesto devi creare una rimodulazione di scadenze, chiudendo le fatture interessate dallo scadenziario e contestualmente riaprire le scadenze col nr documento di rateizzazione.

    mi sembrava di averti risposto…

    e non sai come fare? da codice intendo…

    chiudi le fatture e apri delle scadenze

    alla fine avrai qualcosa del genere:

  • Re: Lista da selezione utente su maschera

    Ovviamente se vuoi sapere cosa ti deve un cliente o cosa devi ad un fornitore la ricerca la farai dallo scadenziario.

    io ho messo pagamenti con assegni ma tu puoi chiudere le partite inserendo due righe

    la prima chiude le partite con descrizione rateizzazione nr xyz € 5000 (dare)

    la seconda inserisce n riche quante sono le rate e scriverai:

    rateizzazione nr 2 del x/y/z rata 1 di 5 € 1000 scadenza 10/10/23 (avere)

    rateizzazione nr 2 del x/y/z rata 2 di 5 € 1000 scadenza 10/11/23 (avere)

    ecc…

    al pagamento 

    pagata rateizzazione 2 rata 1 € 1000 (dare)

    esempio su fornitori, per clienti le sezioni dare e avere sono invertite

    saluti

Devi accedere o registrarti per scrivere nel forum
23 risposte