Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Calcolo Provvigioni

  1. #1
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541

    Calcolo Provvigioni

    Ciao a tutti, io dovrei calcolare le provigioni degli agenti.
    Ho 3 tabelle

    1 - [Provvigioni]
    [idProvvigione] [bigint] IDENTITY(1,1) NOT NULL,
    [fidStato] [int] NULL,
    [NomeProvvigione] [varchar](50) NOT NULL,
    [Note] [text] NULL

    2 - [ProvvigioniCategorie]
    [idProvvigioneCategoria] [bigint] IDENTITY(1,1) NOT NULL,
    [fidProvvigione] [bigint] NOT NULL,
    [fidCategoriaProdotto] [bigint] NULL,
    [Bonus] [decimal](18, 2) NULL,

    3 - [ScaglioniProvvigioni]
    [idScaglioneProvvigione] [bigint] IDENTITY(1,1) NOT NULL,
    [fidProvvigioneCategoria] [bigint] NOT NULL,
    [DaImporto] [decimal](18, 2) NOT NULL,
    [AImporto] [decimal](18, 2) NOT NULL,
    [PercProvvigione] [decimal](18, 2) NOT NULL

    GLi scaglioni sono
    0 - 30.000 € - 4%
    30.000 - 60.000 € 5%
    60.000 - 1.000.000 € - 8%

    diciamo che poi a seconda della categoria del prodotto cambia lo scaglione

    Ora supponendo che io nel mese per cui sto calcolando le provvigioni ho fatturato per la categoria X 50.000 €

    Come faccio a calcolare la provvigione totale tenendo conto che dovrei avere come risultato

    per 30.000 € il 4%
    per 20.000 € il 5% (ovvero il restante importo di 50.000 -30.000)

    Lo devo fare in C#.
    Per ora ho impostato il cliclo sugli agenti
    Recupero l'id provvigione abbinato
    poi ciclo le categorie di prodotto
    per ogni categoria recupero il fatturato mensile dell'agente
    ed ora devo calcolare la provvigione
    quale strada è la migliore da seguire?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Ciao, scusa una domanda, ma quello che non riesci a fare è recuperare i dati corretti dal database o fare il mero calcolo della provvigione?
    Riccardo Sadocchi
    Microsoft MCP C#

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Mettiamo che hai recuperato i dati dal db e li hai salvati inizializzando delle proprietà di una classe, ad esempio

    codice:
    public class CalcoloProvvigini
    {
        private List<float> mScaglioni { get; set; }
        private List<float> mPercentuali { get; set; }
        private float mFatturato { get; set; }
    
        public CalcoloProvvigini(string Agente)
        {
             /*
                 inizializzando la classe puoi passare come argomento l'agente
                 di cui estrarre il fatturato mensile e, quindi, richiamare un metodo
                 della classe che recupera tutti i dati dal db per i calcoli
             */
            RecuperaDati(Agente);
        }
    
        private void RecuperaDati(string ag)
        {
            // qui recuperi i dati dal db e valorizzi le proprità scaglioni e fatturato
        }
    
        public Dictionary<string, float> Provvigioni(float fatturato = null)
        {
            // ho indicato un argomento facoltativo perchè in caso tu volessi
            // per qualsiasi motivo passare un valore diverso lo puoi fare
            fatturato = fatturato != null ? fatturato : mFatturato;
    
            // controllo che sia stao valorizzato il parametro degli scaglioni
            if (mScaglioni == null || mPercentuali == null)
            {
                return; 
            }
    
            float a, b c;
            Dictionary<string, float> result = new Dictionary<string, float>();
    
            if (fatturato <= mScaglioni[0])
            {
                a = fatturato * (mPercentuali[0] / 100);
                result.Add("Scaglione1", a);
            }
            else if (fatturato > mScaglioni[0] && fatturato <= mScaglioni[1])
            {
                a = mScaglioni[0] * (mPercentuali[0] / 100);
                b = (fatturato - mScaglioni[0]) * (mPercentuali[1] / 100);
    
                result.Add("Scaglione1", a);
                result.Add("Scaglione2", b);
            }
            else if (fatturato > mScaglioni[1])
            {
                a = mScaglioni[0] * (mPercentuali[0] / 100);
                b = mScaglioni[1] * (mPercentuali[1] / 100);
                c = (fatturato - mscaglioni[1]) * (mPercentuali[2] / 100);
    
                result.Add("Scaglione1", a);
                result.Add("Scaglione2", b);
                result.Add("Scaglione3", c);
            }
    
            return result;
        }
    }
    Considera due cose:
    - ho scritto una cosa al volo e senza controllarla perchè l'ho scritta direttamente qui nel forum
    - ho dato per scontato che gli scaglioni sono tre, se non sono sempre uguali per categoria il sistema deve essere rivisto

    Chiaramente è un'idea, una traccia che ti potrebbe servire coma spunto, di certo non la soluzione definitiva....
    Riccardo Sadocchi
    Microsoft MCP C#

  4. #4
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Quote Originariamente inviata da rikyeko Visualizza il messaggio
    Mettiamo che hai recuperato i dati dal db e li hai salvati inizializzando delle proprietà di una classe, ad esempio


    Chiaramente è un'idea, una traccia che ti potrebbe servire coma spunto, di certo non la soluzione definitiva....
    No era perfettamente quello che mi serviva ovvero cercare un modo per calcolare la mera provvigione.
    Quella del dictionary è una cosa a cui non avevo pensato.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Allora meglio così!!!
    Riccardo Sadocchi
    Microsoft MCP C#

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.