AIUTO DATABASE GESTIONE PAGAMENTI

di
Anonimizzato12218
il
14 risposte

AIUTO DATABASE GESTIONE PAGAMENTI

Ciao a tutti,
sono nuovo del forum e mi sono iscritto perchè ho un un grosso problema. Devo realizzare un database per la gestione dei pagamenti di alcuni agenti commerciali. Preciso che non sono un programmatore, anche se qualcosa di visual basic lo mastico..
Il mio problema è il seguente:
ogni mese devo fare un controllo per vedere quanti contratti sono andati a buon fine. Se il numero di questi contratti è maggiore di 100 devo pagare l'agente con 25 euro, se invece è maggiore di 200 devo pagarlo con 50 euro. Questo se i contratti sono domestici. Se invece ho contratti di impresa devo pagarli rispettivamente con 100 e 200 euro.
La mia tabella di partenza ha i seguenti campi/valori:
Numero contratto - Data contratto - Tipo contratto - Agente
10000212 01.01.2012 Domestico Rossi
10000213 05.02.2012 Impresa Bianchi
10003212 03.03.2012 Impresa Rossi
e così via...
Dovrei quindi assegnare all'agente Rossi dei compensi diversi in base al tipo di contratto e solo se ha raggiunto una soglia minima di contratti (nel caso domestico 100 contratti realizzati).
Non ho idea da dove iniziare...
Spero possiate aiutarmi!
Grazie mille.
Ciao

14 Risposte

  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    Ciao,

    inanzitutto i compensi come li gestisci.

    Quando dici dovrei assegnare dei compensi ad Tizio, immagino che potresti settare un campo compenso in base a delle condizioni. Non vedo pero campi di quel genere.

    Quindi come pensavi di fare?
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    Ho pensato ad una tabella aggiuntiva oppure da usare all'interno della funzione.
    Ad esempio:

    Tipo contratto Compenso_Soglia1 Compenso_Soglia2
    Domestico 25 50
    Impresa 100 200

    Avrei bisogno di un count sui contratti realizzati per mese prima di assegnarli..
    Mi inchiodo proprio qui, come realizzare il conteggio per mese e l'assegnazione...
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    Puoi farmi un esempio di input e output che vuoi ottenere?
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    Input: le due mini tabelle che ho inserito prima, una con i contratti e gli agenti e l'altra con i compensi, suddivisi per tipo di contratto
    L'output è un'estrazione (report) per trimestre ad esempio:
    periodo gennaio-marzo
    Agente Compenso N° contratti attivati
    Bianchi 250 200
    Rossi 200 ....
    e così via...

    Dove il compenso deve essere calcolato solo se l'agente ha raggiunto la soglia di x contratti (con compensi diversi se è un contratto domestico o d'impresa).
    Spero sia chiaro...
    Grazie
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    Allora cerchiamo di andare per gradi.

    Una prima query che puoi fare puo' essere piu o meno cosi:
    
    SELECT AGENTE,COUNT(NCONTRATTI)
    FROM TABELLA
    WHERE DATACONTRATTO BETWEEN X AND Y
    GROUP BY(AGENTE)
    
    Questa ti conta il numero dei contratti per ogni agente. Rimane dunque da implementare una query di INSERT che sara' condizionata da alcune iif
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    Ok, questa l'ho fatta e ho un output del genere:

    Agente Conteggio
    Bianchi 150
    Rossi 60
    Moretti 200

    A cui ho aggiunto la colonna Mercato (per differenziare i conteggi per domestici e imprese)
    A questo punto, la parte più difficile, è attribuire a chi ha raggiunto un certo numero di contratti domestici un importo (25 o 50 euro, a seconda del numero di contratti - 100 o 200) e chi l'ha sottoscritto con le imprese un altro importo (100 o 200 euro per 100 o 200 contratti realizzati). Nell'esempio l'agente Rossi non dovrebbe avere alcun importo (se fossero 60 contratti impresa).
    Grazie mille per il tuo aiuto
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    Ho scritto in maniera un po' contorta... Ti scrivo qui un output di esempio:

    Agente Conteggio_contratti Mercato Importo per n° di contratti e per tipo

    Bianchi 150 Domestico 25*150 euro
    Bianchi 200 Impresa 100*200 euro
    Rossi 60 Impresa 0 euro
    Rossi 125 Domestico 25*125 euro
    Moretti 3 Domestico 0 euro
    Moretti 89 impresa 0 euro

    Immagina che la soglia dei contratti sia 100 sia per il domestico e per l'impresa ma cambiano solo gli importi...
    Grazie
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    A questo punto si tratta solo di giocare con l'if. Facci un po di pratica.

    Poi scriverai nella query una cosa del genere:

    iif([tab].[mercato] = 'impresa' ; iif([tab].[conteggio] > 100; 100 eccetera ...
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    Non la vedo proprio così semplice...
    prendi questo caso:

    Agente Contratti Mercato Importo
    Bianchi 200 Impresa X

    Se un agente fa 100 contratti impresa prende 100 euro, se ne fa 200 prende 200 euro.
    Se un agente (magari lo stesso) fa 100 contratti domestico prende 25 euro, se ne fa 200 prende 50 euro.
    Come faccio a fargli un IIF multiplo in una query?
    Dovrei scrivere IF mercato = Impresa AND IF (conteggio) < 100 allora Importo = Null
    IF mercato = Impresa AND IF 100 < (conteggio) < 200 allora Importo = 100
    IF mercato = Impresa AND IF (conteggio) > 200 allora Importo = 200

    Lo stesso per il mercato domestico..
    Come posso inserire tutto questo in una procedura che mi calcola gli importi su circa 300 agenti? Un agente può fare contratti sui due diversi mercati quindi può avere importi diversi...
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    Mi intrometto

    devi fare delle if annidate

    costruisciti il trucco dovrebbe essere che il compenso e' la somma di tanti compensi
    se non ricado in quella if quel compenso = 0

    >Dovrei scrivere IF mercato = Impresa AND IF (conteggio) < 100 allora Importo = Null
    >IF mercato = Impresa AND IF 100 < (conteggio) < 200 allora Importo = 100
    >IF mercato = Impresa AND IF (conteggio) > 200 allora Importo = 200

    compenso1= IF mercato = Impresa AND IF (conteggio) < 100 allora Importo = 0
    compenso2=IF mercato = Impresa AND IF 100 < (conteggio) < 200 allora Importo = 100 altirmenti 0
    compenso3=IF mercato = Impresa AND IF (conteggio) > 200 allora Importo = 200 altrimenti 0

    prova a farti una query con + colonne di prova
    comenso1, comepnso2, compenso3,... , totCompenso=comepenso1+2+3
    se ti va bene concateni il tutto

    TotCompenso = IIF( mercato = Impresa AND IF (conteggio) < 100; conteggio * 100; 0)+
    iIF( mercato = Impresa AND IF 100 < (conteggio) < 200 ;conteggio * 200; 0)
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    pfmarro ha scritto:


    mi intrometto

    devi fare delle if annidate

    costruisciti il trucco dovrebbe essere che il compenso e' la somma di tanti compensi
    se non ricado in quella if quel compenso = 0

    >Dovrei scrivere IF mercato = Impresa AND IF (conteggio) < 100 allora Importo = Null
    >IF mercato = Impresa AND IF 100 < (conteggio) < 200 allora Importo = 100
    >IF mercato = Impresa AND IF (conteggio) > 200 allora Importo = 200

    compenso1= IF mercato = Impresa AND IF (conteggio) < 100 allora Importo = 0
    compenso2=IF mercato = Impresa AND IF 100 < (conteggio) < 200 allora Importo = 100 altirmenti 0
    compenso3=IF mercato = Impresa AND IF (conteggio) > 200 allora Importo = 200 altrimenti 0

    prova a farti una query con + colonne di prova
    comenso1, comepnso2, compenso3,... , totCompenso=comepenso1+2+3
    se ti va bene concateni il tutto

    TotCompenso = IIF( mercato = Impresa AND IF (conteggio) < 100; conteggio * 100; 0)+
    iIF( mercato = Impresa AND IF 100 < (conteggio) < 200 ;conteggio * 200; 0)

    Si esatto.

    Gioca un po con le if fai pratica ed e' fatta
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    Ok adesso provo a fare qualche test
    Come faccio da una maschera "Report" generale che ho creato a fare in modo che mi calcoli tutti i compensi con un semplice pulsante?
    Grazie a tutti per l'aiuto ma è la prima volta che faccio una cosa del genere
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    - prima creati la query che funzioni
    - poi associ al report la query che calcola

    facci sapere!
  • Re: AIUTO DATABASE GESTIONE PAGAMENTI

    La tua risposta pfmarro non mi è molto di aiuto... Il processo lo conosco bene, il mio problema è proprio la modalità con cui metterlo in atto ovvero il codice che richiama la funzione.
Devi accedere o registrarti per scrivere nel forum
14 risposte