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

Odoo (ex-OpenERP) Discussion :

Modification du code d'une facture sur ODOO


Sujet :

Odoo (ex-OpenERP)

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Points : 19
    Points
    19
    Par défaut Modification du code d'une facture sur ODOO
    Bonjour !
    actuellement j'effectue une modification du code du cms ODOO en vue d'ameliorer la presentation de la facture .maintenant je rencontre une difficulté qui es la conversion de la somme total qui es en chiffre pour qu'elle s'affche en toute lettre.quelqu'un aurais de l'experience dans le domaine pour maider.merci

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Odoo propose des outils dans son code de base qui permet de convertir des nombres en leur écriture en toutes lettres. Cependant c'est limité à l'anglais (je ne sais plus trop où dans le code exactement).

    Pour des besoins similaire j'avais fait un petit bout de code qui fait (suffisamment) bien le travail.

    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
    def under1000(a):
        t = ['zero', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit','neuf', 'dix', 'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize', 'dix-sept', 'dix-huit', 'dix-neuf', 'vingt', 'ving', 'vingt-deux', 'vingt-trois', 'vingt-quatre', 'vingt-cinq', 'vingt-six', 'vingt-sept', 'vingt-huit', 'vingt-neuf','trente', 'trent', 'trente-deux', 'trente-trois', 'trente-quatre', 'trente-cinq', 'trente-six', 'trente-sept', 'trente-huit', 'trente-neuf', 'quarante', 'quarant', 'quarante-deux', 'quarante-trois', 'quarante-quatre', 'quarante-cinq', 'quarante-six', 'quarante-sept', 'quarante-huit', 'quarante-neuf', 'cinquante', 'cinquant', 'cinquante-deux', 'cinquante-trois', 'cinquante-quatre', 'cinquante-cinq', 'cinquante-six', 'cinquante-sept', 'cinquante-huit', 'cinquante-neuf', 'soixante', 'soixant', 'soixante-deux', 'soixante-trois', 'soixante-quatre', 'soixante-cinq', 'soixante-six', 'soixante-sept', 'soixante-huit', 'soixante-neuf', 'soixante-dix', 'soixant', 'soixante-douze', 'soixante-treize', 'soixante-quatorze', 'soixante-quinze', 'soixante-seize', 'soixante-dix-sept', 'soixante-dix-huit', 'soixante-dix-neuf', 'quatre-vingts', 'quatre-vingt-un', 'quatre-vingt-deux', 'quatre-vingt-trois', 'quatre-vingt-quatre', 'quatre-vingt-cinq', 'quatre-vingt-six', 'quatre-vingt-sept', 'quatre-vingt-huit', 'quatre-vingt-neuf', 'quatre-vingt-dix', 'quatre-vingt-onze', 'quatre-vingt-douze', 'quatre-vingt-treize', 'quatre-vingt-quatorze', 'quatre-vingt-quinze', 'quatre-vingt-seize', 'quatre-vingt-dix-sept', 'quatre-vingt-dix-huit', 'quatre-vingt-dix-neuf']
        centaine = int(a)/100
        if centaine > 1:
            return t[centaine] + " cent " + t[a-centaine*100]
        elif centaine == 1:
            return ' cent '+ t[a-centaine*100]
        else:
            return t[a]
    
    
    def nombre2lettres(a):
        milliard = int(a)/10**9
        if milliard > 0:
            return under1000(milliard) + " milliard " + nombre2lettres(a-milliard*10**9)
        
        million = int(a)/10**6
        if million > 0:
            return under1000(million) + " million " + nombre2lettres(a-million*10**6)
        
        millier = int(a)/10**3
        if millier > 1:
            return under1000(millier) + " mille " + under1000(a-millier*10**3)
        elif millier == 1:
            return " mille" + under1000(a-millier*10**3)
        return under1000(a)
    Y'a un soucis d'espace en trop devant les centaines et il ne gère que les entiers (pas de virgule, mais c'est trivial à ce point).

    Si ça peut vous aider...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    Bonjour!
    merxi 123leo!!!
    le code de la facture precedente est la suivante
    <?xml version="1.0"?>
    <t t-name="account.report_invoice_document">
    <t t-call="report.external_layout">
    <t t-set="o" t-value="o.with_context({'lang':o.partner_id.lang})"/>
    <div class="page">
    <div class="row">
    <div class="col-xs-5 col-xs-offset-7">
    <address t-field="o.partner_id" t-field-options="{&quot;widget&quot;: &quot;contact&quot;, &quot;fields&quot;: [&quot;address&quot;, &quot;name&quot;], &quot;no_marker&quot;: true}"/>
    <span t-if="o.partner_id.vat">TIN: <span t-field="o.partner_id.vat"/></span>
    </div>
    </div>

    <h2>
    <span t-if="o.type == 'out_invoice' and (o.state == 'open' or o.state == 'paid')">Invoice</span>
    <span t-if="o.type == 'out_invoice' and o.state == 'proforma2'">PRO-FORMA</span>
    <span t-if="o.type == 'out_invoice' and o.state == 'draft'">Draft Invoice</span>
    <span t-if="o.type == 'out_invoice' and o.state == 'cancel'">Cancelled Invoice</span>
    <span t-if="o.type == 'out_refund'">Refund</span>
    <span t-if="o.type == 'in_refund'">Vendor Refund</span>
    <span t-if="o.type == 'in_invoice'">Vendor Bill</span>
    <span t-field="o.number"/>
    </h2>

    <div class="row mt32 mb32">
    <div class="col-xs-2" t-if="o.name">
    <strong>Description:</strong>
    <p t-field="o.name"/>
    </div>
    <div class="col-xs-2" t-if="o.date_invoice">
    <strong>Invoice Date:</strong>
    <p t-field="o.date_invoice"/>
    </div>
    <div class="col-xs-2" t-if="o.date_due and o.type == 'out_invoice' and (o.state == 'open' or o.state == 'paid')">
    <strong>Due Date:</strong>
    <p t-field="o.date_due"/>
    </div>
    <div class="col-xs-2" t-if="o.origin">
    <strong>Source:</strong>
    <p t-field="o.origin"/>
    </div>
    <div class="col-xs-2" t-if="o.partner_id.ref">
    <strong>Customer Code:</strong>
    <p t-field="o.partner_id.ref"/>
    </div>
    <div name="reference" class="col-xs-2" t-if="o.reference">
    <strong>Reference:</strong>
    <p t-field="o.reference"/>
    </div>
    </div>

    <!-- Is there a discount on at least one line? -->
    <t t-set="display_discount" t-value="any([l.discount for l in o.invoice_line_ids])"/>

    <table class="table table-condensed">
    <thead>
    <tr>
    <th>Description</th>
    <th class="text-right">Quantity</th>
    <th class="text-right">Unit Price</th>
    <th t-if="display_discount" class="text-right" groups="sale.group_discount_per_so_line">Disc.(%)</th>
    <th class="text-right">Taxes</th>
    <th class="text-right">Price</th>
    </tr>
    </thead>
    <tbody class="invoice_tbody">
    <tr t-foreach="o.invoice_line_ids" t-as="l">

    <td class="text-right"><span t-field="l.name"/></td>

    <td class="text-right">
    <span t-field="l.quantity"/>
    <span t-field="l.uom_id" groups="product.group_uom"/>
    </td>

    <td class="text-right">
    <span t-field="l.price_unit"/>
    </td>

    <td t-if="display_discount" class="text-right" groups="sale.group_discount_per_so_line">
    <span t-field="l.discount"/>
    </td>

    <td class="text-right">
    <span t-esc="', '.join(map(lambda x: (x.description or x.name), l.invoice_line_tax_ids))"/>
    </td>

    <td class="text-right">
    <span t-field="l.price_subtotal" t-field-options="{&quot;widget&quot;: &quot;monetary&quot;, &quot;display_currency&quot;: &quot;o.currency_id&quot;}"/>
    </td>
    </tr>
    </tbody>
    </table>

    <div class="row">
    <div class="col-xs-4 pull-right">
    <table class="table table-condensed">
    <tr class="border-black">
    <td><strong>Subtotal</strong></td>
    <td class="text-right">
    <span t-field="o.amount_untaxed" t-field-options="{&quot;widget&quot;: &quot;monetary&quot;, &quot;display_currency&quot;: &quot;o.currency_id&quot;}"/>
    </td>
    </tr>
    <t t-foreach="o._get_tax_amount_by_group()" t-as="amount_by_group">
    <tr>
    <td><span t-esc="amount_by_group[0]"/></td>
    <td class="text-right">
    <span t-esc="amount_by_group[1]"/>
    </td>
    </tr>
    </t>
    <tr class="border-black">
    <td><strong>Total</strong></td>
    <td class="text-right">
    <span t-field="o.amount_total" t-field-options="{&quot;widget&quot;: &quot;monetary&quot;, &quot;display_currency&quot;: &quot;o.currency_id&quot;}"/>
    </td>
    </tr>
    </table>
    </div>
    </div>

    <div class="row" t-if="o.tax_line_ids">
    <div class="col-xs-6">
    <table class="table table-condensed">
    <thead>
    <tr>
    <th>Tax</th>
    <th class="text-right">Base</th>
    <th class="text-right">Amount</th>
    </tr>
    </thead>
    <tbody>
    <tr t-foreach="o.tax_line_ids" t-as="t">
    <td><span t-field="t.name"/></td>
    <td class="text-right">
    <span t-field="t.base" t-field-options="{&quot;widget&quot;: &quot;monetary&quot;, &quot;display_currency&quot;: &quot;o.currency_id&quot;}"/>
    </td>
    <td class="text-right">
    <span t-field="t.amount" t-field-options="{&quot;widget&quot;: &quot;monetary&quot;, &quot;display_currency&quot;: &quot;o.currency_id&quot;}"/>
    </td>
    </tr>
    </tbody>
    </table>
    </div>
    </div>

    <p t-if="o.comment">
    <strong>Comment:</strong>
    <span t-field="o.comment"/>
    </p>
    <p t-if="o.payment_term_id">
    <span t-field="o.payment_term_id.note"/>
    </p>
    <p t-if="o.fiscal_position_id.note">
    <strong>Fiscal Position Remark:</strong>
    <span t-field="o.fiscal_position_id.note"/>
    </p>
    </div>
    </t>
    </t>



    maintenant jaimerai qu'elle m'affiche la partie prix total qui est en chiffre en lettre.
    en n'analysant ton code je comprend la logique mais je ne vois pas trop comment l'adapter a ma situation.merci de m'eclairer davantage

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Deux possibilités :

    1) Cette écriture en lettre ne vous sert que dans l'impression de la facture en question :
    Le plus propre est de créer un report parser : http://stackoverflow.com/questions/3...or-qweb-report

    2) Vous envisagez d'utiliser cette écriture ailleurs (mail, affichage sur la vue form...) :
    Le plus simple est de créer un champ computed qui dépendra du champ amount_total
    https://www.odoo.com/documentation/8...omputed-fields
    Puis de modifier le report facture.

    Léo

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    Merci Léo

  6. #6
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Points : 19
    Points
    19
    Par défaut Modification du format de la facture avec ODOO
    bonjour j'utilise actuellement ODOO pour generer les differentes factures.cependant je rencontre une difficulté concernant le format des nombres qui s'affiche actuellement 10,00.
    maintenant jaimerai qu'elle s'affiche uniquement de la sorte 10.sans la partie decimal.sil vous plait quelqu'un pourait il m'aider.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Dans le menu : Configuration > Configuration > Comptabilité
    Il y a un champ qui permet d'indiquer la précision décimale (le second en haut), par défaut il est à 2, il suffit de le mettre à 0.

    Par contre il me semble que ça ne couvre que la partie compta d'Odoo... à tester.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    merci xa marché
    Super!!!

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

Discussions similaires

  1. code de modification du continu d'une facture
    Par directeur dans le forum WinDev
    Réponses: 2
    Dernier message: 26/01/2011, 15h30
  2. faire une facture sur un stringgrid
    Par jack2009 dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/09/2009, 16h48
  3. Imprimer une facture sur plusieurs pages
    Par Thrud dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 09/09/2009, 10h30
  4. Réponses: 1
    Dernier message: 03/10/2008, 21h34
  5. Sortie d'une facture sur excel
    Par ShortcutZ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/01/2006, 17h07

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