IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

InterBase Discussion :

Calculer Montant Amortissement


Sujet :

InterBase

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut Calculer Montant Amortissement
    Bonjour,
    Je dois ecrire une requête que malheuresement, je sais pas par ou debuté même si je comprend l'enchainement que je dois faire....
    Soit la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE "AMORTISSEMENT" 
    (
      "NUMERO"	VARCHAR(6) NOT NULL,
      "Lib_Materiel" VARCHAR(30) NOT NULL,
      "Montant_INV"	INTEGER NOT NULL,
      "Date_Mise_Service" DAte not null
      "DUREE"	integer NOT NULL,
     PRIMARY KEY ("NUMERO")
    );
    ou Montant_INV represente le montant de l'investissment, Date_Mise_Service represente la date à laquelle le materiel acquerit est mis en service et DUREE represente le nombre de mois pour que le matériel soit complètement amorti après que Date_Mise_Service(AAAA-MM-JJ) + Durée c'est à dire que la valeur du materiel soit = 0.

    Dans mon application, j'enregistre donc l'ensemble du materiel de mon utilisateur et je dois être en mésure de pouvoir faire un listing des matériels (Libelle_Materiel, valeur de l'amortissement durant la période) non complètement amortis sur une periode de debut et fin.
    La valeur mensuelle de l'amortissement = Montant_INV / DUREE

    Si pour un materiel,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Date_Mise_Service + DUREE) < Debut
    alors cet article n'est pas renvoyé.
    Si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Date_Mise_Service) > Debut
    alors cet article n'est pas renvoyé.

    Dans les autres cas, je dois retourner le libellé du matériel + la valeur de l'amortissement. Et c'est la que je bloque car savant pas comment le faire.
    Mais néammoins, j'ai essayé ceci, mais le paramètre dans le CASE me renvoie une erreure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Lib_Materiel, CASE WHEN Date_Mise_Service  < :Debut AND (Date_Mise_Service + Duree*30)  < :Fin then Date_Mise_Service + Duree*30 - :Debut
    ...............
     
    FROM AMORTISSEMENT
     WHERE .......

    Faites moi toutes vos propositions, je suis prenant.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Avant de t'expliquer comment réaliser, il me faut quelques explications complémentaires. En effet, il existe plusieurs méthodes d'amortissements.
    • L'amortissement linéaire ;
    • L'amortissement dérogatoire qui a remplacé l'amortissement dégressif antérieur.

    Si le calcul de l'amortissement linéaire est assez simple, il n'en est pas de même pour l'amortissement dérogatoire.

    Généralement, le calcul de l'amortissement se fait par période. En principe l'exercice de l'entreprise, il te faut donc une date de début d'exercice et une date de fin d'exercice pour gérer l'amortissement annuel. Attention, les règles pour le calcul de l'amortissement lors de l'acquisition ne sont pas les mêmes suivant qu'il s'agit d'un amortissement linéaire ou d'un amortissement dérogatoire.

    Je pense qu'avant de créer tes tables, il serait bien d'établir un MCD afin de définir les besoins exacts pour le calcul.

    Il existe des programmes qui font cela très bien pour un coût raisonnable. Il faut peut être réfléchir sur ce point.

    Fixes les règles de gestion, nous pourrons ensuite d'aider.

    Bon courage

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Salut,
    Il s'agit d'un amortissement linéaire. En fait, je dois faire tout le traitement dans la requête et renvoyer le résultat dans un état (FastReport).

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Tu veux le calcul pour chaque période. Il faut définir les périodes. Je ne vois pas comment il est possible de calculer des amortissements sans connaître lé début et la fin de la période de l'amortissement à calculer.

    Ou bien, il s'agit de présenter une fiche des amortissements du matériel avec une périodicité de 12 mois. Exemple : achat d'un matériel au 15 juin 2010 ayant une durée d'amortissement de 5 ans. Nous aurons :

    Année 1 - du 15/06/2010 au 31/12/2010 = 6,5 mois
    Année 2 - du 01/01/2011 au 31/12/2011 = 12 mois
    Année 3 - du 01/01/2012 au 31/12/2012 = 12 mois
    Année 4 - du 01/01/2013 au 31/12/2013 = 12 mois
    Année 5 - du 01/01/2014 au 14/06/2014 = 5,5 mois

    Ce schéma répond-t-il à ta demande ? Si oui, je te présenterai un modèle de requête.

    A bientôt

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Salut,
    Voici un exemple:
    Soit la table Amortissement contenant simplement une seule ligne(peut contenir plusieurs lignes):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    N°  Lib_Materiel    Montant_INV   Date_Mise_Service    Durée (en mois)
    1    Article1           12 000         '2010-08-01'               6
    NB: Amortissement Linéaire et '2010-08-01' = 'AAAA-MM-JJ'

    Si l'utilisateur me dit de lister le ou les Libellé Materiel ainsi que la valeur de l'amortissement de la periode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    -----'2010-04-01' & '2010-04-30' 
            Pas d'article
    -----'2011-03-31' & '2011-04-30' 
            Pas d'article
    -----'2010-04-01' & '2010-08-30'
    1        Article1      2 000
    -----'2010-04-01' & '2010-09-30'
    1  Article1  4 000
    -----'2010-04-01' & '2011-01-31'
    1   Article1  12 000
    -----'2010-08-01' & '2010-09-30'
    1   Article1  4 000
    -----'2010-09-01' & '2010-09-30'
    1   Article1  2 000
    -----'2010-09-01' & '2010-10-31'
    1   Article1  4 000
    ...............................
    NB: L'amortissement se calcule par mois et non par jour ou année donc pas de demi mois....

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Effectivement le calcul des amortissements ne fait pas par mois, mais il s'agissait de présenter un schéma. Pour information, il ne peut pas se faire par année, car il y a celles qui sont bissextiles d'où le calcul erroné d'un jour. La seule méthode exacte est le calcul par jour.

    Or, dans ta base d'amortissements, tu présentes une durée en mois pour calculer l'amortissement. Je te cite :
    Dans mon application, j'enregistre donc l'ensemble du materiel de mon utilisateur et je dois être en mésure de pouvoir faire un listing des matériels (Libelle_Materiel, valeur de l'amortissement durant la période) non complètement amortis sur une periode de debut et fin.
    La valeur mensuelle de l'amortissement = Montant_INV / DUREE
    Il me semble qu'il y a une incohérence.

    En général, dans un tableau d'amortissement, la période totale d'amortissement s'exprime avec une date de début et une date de fin
    Exemple : Un matériel amorti sur 5 ans, nous aurons :
    Date départ = 2010/01/08
    Date fin = 2015/01/07

    Ainsi, nous pourrons déterminer le taux d'amortissement par jour et faire la calcul sur la période souhaitée.

    Aujourd'hui, je suis indisponible. Je te présente une requête jeudi pour traiter cette situation.

    A plus

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Bonjour, je pense que nous disons la meme chose à la différence que moi, je raisonne en mois.
    Soit ton exemple:
    En général, dans un tableau d'amortissement, la période totale d'amortissement s'exprime avec une date de début et une date de fin
    Exemple : Un matériel amorti sur 5 ans, nous aurons :
    Date départ = 2010/01/08
    Date fin = 2015/01/07
    Je reformule suivant ma BD

    En général, dans un tableau d'amortissement, la période totale d'amortissement s'exprime avec une date de début et une date de fin
    Exemple : Un matériel amorti sur 5 ans ce qui correspond à 60 mois, nous aurons :
    Date départ = 2010/01/01
    Date fin = 2014/12/31
    Si tu fais la difference entre Date Fin et Date Debut, tu auras 60 mois ce qui equivaut à 5 ans.
    Fais moi ta proposition et je vais l'adapter à mon cas.
    Cordialement.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Je remets, comme promis, la requête pour calculer les amortissements. En réalité, j'ai fait cette requête sous la forme d'une procédure stockée, sinon il est impossible de calculer la durée d'amortissements avec des valeurs paramétrées.

    Il aurait été possible d'utiliser les Common Table Expressions (CTE), mais je ne suis pas certain qu'elles soient implantées dans Interbase. Pour ma part, j'ai utilisé Firebird pour faire mes essais.

    J'ai créé la table suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE AMORTISS (
        NUMERO            CHAR(6) NOT NULL,
        LIB_MATERIEL      VARCHAR(30) NOT NULL,
        MONTANT_INV       NUMERIC(15,2) NOT NULL,
        DATE_MISE_SERV    DATE NOT NULL,
        DUREE_AMORT_MOIS  INTEGER NOT NULL,
        DATE_FIN_AMORT    DATE NOT NULL
    );
    ALTER TABLE AMORTISS ADD CONSTRAINT PK_AMORTISS PRIMARY KEY (NUMERO);
    Valeurs incluses dans la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      NUMERO   LIB_MATERIEL   MONTANT_INV     DATE_MISE_SERV  DUREE_AMORT_MOIS      DATE_FIN_AMORT
      000001   Matériel n° 1       10 000.00  15.12.2009                        60  14.12.2014
      000002   Matériel n° 2      100 000.00  20.06.2006                        48  19.06.2010
    La procédure stockée écrite pour le calcul de la dotation aux amortissements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    CREATE OR ALTER PROCEDURE CALCUL_AMORT (
        datedebut date,
        datefin date)
    returns (
        libelle varchar(30),
        valeur_inv numeric(15,2),
        date_serv date,
        mois_amort integer,
        taux_jour numeric(15,8),
        nbre_jours integer,
        dotation numeric(15,2))
    as
    begin
      for
        select LIB_MATERIEL, Montant_Inv, Date_Mise_Serv, Duree_Amort_Mois, AmortJours, DATE_FIN_AMORT - Date_Mise_Serv + 1,
          case WHEN Date_Mise_Serv <= :DateDebut AND :DateFin <= DATE_FIN_AMORT THEN AmortJours * (:datefin - :DateDebut + 1)
               WHEN Date_Mise_Serv >= :DateDebut AND :DateFin <= DATE_FIN_AMORT THEN AmortJours * (:datefin - Date_Mise_Serv + 1)
               WHEN Date_Mise_Serv <= :DateDebut AND :DateFin >= DATE_FIN_AMORT THEN AmortJours * (DATE_FIN_AMORT - :DateDebut + 1)
          END
        from AMORTISS A0
          inner join (SELECT NUMERO, ROUND(Montant_Inv * 1.00000000 / (DATE_FIN_AMORT - Date_Mise_Serv + 1), 8) AS AmortJours FROM AMORTISS) A1
            on A1.NUMERO = A0.NUMERO
        WHERE :DateDebut <= DATE_FIN_AMORT AND :DateFin >= DATE_MISE_SERV
        INTO :libelle, :valeur_inv, :date_serv, :mois_amort, :taux_jour, :Nbre_Jours, :Dotation
      do
      begin
        suspend;
      end
    end^
    Les valeurs DateDebut et DateFin sont à saisir pour déterminer la période de calcul des amortissements. Dans l'exemple, j'ai pris 01/01/2010 et 31/12/2010.

    Voici le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      LIBELLE                VALEUR_INV     DATE_SERV   MOIS_AMORT    TAUX_JOUR         NBRE_JOURS   DOTATION
      Matériel n° 1              10 000.00  15.12.2009            60        5.47645126        1826       1 998.90
      Matériel n° 2             100 000.00  20.06.2006            48       68.44626968        1461      11 635.87
    La mise forme mérite quelques améliorations.

    Bon courage

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Salut,
    Je vais le tester mais je suis d'ores et deja convaincu que ça marche en le compilant manuellement.

    Big up à toi seabs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul montant TTC
    Par Fraisesdesbois dans le forum Excel
    Réponses: 14
    Dernier message: 21/01/2014, 19h50
  2. requête calcul montant total
    Par cyriane dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/06/2012, 11h09
  3. calcul montant TVA suivant consommation minimale
    Par SOPSOU dans le forum Excel
    Réponses: 12
    Dernier message: 26/08/2009, 15h47
  4. Calcul montant dans un DBGrid
    Par compdev dans le forum Débuter
    Réponses: 14
    Dernier message: 23/04/2009, 16h48
  5. [WD9] Calcul montant dans tableau
    Par loic20h28 dans le forum WinDev
    Réponses: 27
    Dernier message: 04/11/2008, 23h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo