add sale_order

This commit is contained in:
Florian du Garage Num 2025-08-30 03:05:14 +02:00
parent 6f8ce3f1d4
commit 8a019fe6a2
5 changed files with 187 additions and 57 deletions

View File

@ -86,14 +86,36 @@ Dans la nouvelle instance, exporter les journaux (facturation / Configuration /
- Supprimer la ligne de l'utilisateur base.admin
- Identifiant
- Langue
- Nom
- Fuseau horaire
- Id externe
- Nom de famille
- Prénom
- Partenaire associé | partner_id/ID
| Nom | Nom (mode développeur) | Nouveau nom de colonne | Changements à faire |
| ------ | ---------------------------------------------------------- | ----------------------------- | ---------------------------- |
| Id externe
| Actif | active | | |
| Identifiant
| Partenaire associé
| Partenaire associé/ID extern
| Type de jeton de connexion
| Id. utilisateur oauth
| Notification
### Migrate hr.employee
| Nom | Nom (mode développeur) | Nouveau nom de colonne | Changements à faire |
| ------ | ---------------------------------------------------------- | ----------------------------- | ---------------------------- |
| Id externe | | |
| Actif | active | | |
| Adresse professionnelle/ID externe | address_id | | |
| Mentor/ID externe | coach_id/id | | placer en fin de tableau les enregistrements avec Mentor défini |
| Département/ID externe | departement_id | | |
| Poste/ID externe | job_id/id | | |
| Titre du poste | job_title | | |
| Téléphone portable professionnel | mobile_phone | | |
| Nom de l'employé | name | | |
| Manager/ID externe | parent_id/id | | placer en fin de tableau les enregistrements avec Manager défini |
| Calendrier de la ressource/ID externe | resource_calendar_id | | remplacer les ids |
| Utilisateur | user_id | | |
| Adresse e-mail professionnelle | work_email | | |
| Téléphone professionnel | work_phone | | |
| Congés/ID externe | leave_manager_id/id | | placer en fin de tableau les enregistrements avec Congés (i.e. Responsable des congés) défini |
### Migrate account.product
@ -138,51 +160,51 @@ Dans la nouvelle instance, exporter les journaux (facturation / Configuration /
On fait un premier import de account.move, en excluant les colonnes qui provoquent un recalcul du montant (débit, crédit, taxes, produit...)
Le deuxième import prend en compte toutes les colonnes.
| Nom | Nom (dev mode) | Ne pas importer | Dès le 1er import | Nom de colonne pour import | Remplacements |
|----------|----------------------------------------------------------- | ----------------| -------------------| ----------------------------- | --------------------- |
| ID | id | | X | | |
| Extourne/ID | reversal_move_id/id | | X | | |
| Type | move_type | | X | | |
| Statut | state | | X | | |
| Date d'échéance | invoice_date_due | | X | | |
| Date | date | | X | | |
| Date de facturation | invoice_date | | X | | |
| Journal/ID | journal_id/id | | X | | à remplacer |
| Journal/Nom du journal | journal_id/name | | X | | à supprimer |
| Numéro | name | | X | | |
| Référence | ref | | X | | |
| Référence du paiement | payment_ref | | X | | |
| Partenaire/ID | partner_id/id | | X | | |
| Partenaire/Nom | partner_id/name | | X | | |
| Paiements/ID | id | | X | | |
| Paiements/ID | id | | X | | |
| Bon de commande / ID | id | | X | | |
| Note de frais/ID | | X | | |
| Note de frais/ID | | X | | |
| Écritures comptables/ID | line_ids/id | | X | | |
| Écritures comptables/Type d'affichage | line_ids/display_type | | X | | sur ttes les lignes |
| Écritures comptables/Pièce comptable/ID | line_ids/move_id/id | X | | | |
| Écritures comptables/Compte/Code | line_ids/account_id/code | | X | Écritures comptables/Compte | à tester |
| Écritures comptables/Libellé | line_ids/name | | X | | |
| Écritures comptables/Date d'échéance | line_ids/date_maturity | | X | | |
| Écritures comptables/Date de début | line_ids/start_date | | X | | |
| Écritures comptables/Date de fin | line_ids/end_date | | X | | |
| Écritures comptables/Ligne d'avoir/ID | line_ids/refund_line_ids/id | | X | | |
| Écritures comptables/Partenaire/ID | line_ids/partner_id/id | | x | | à vérifier |
| Écritures comptables/Unité de mesure/ID | line_ids/product_uom_id/id | | x | | |
| Écritures comptables/Débit | line_ids/debit | | | | |
| Écritures comptables/Crédit | line_ids/credit | | | | |
| Écritures comptables/Produit/ID | line_ids/product_id/id | | | | |
| Écritures comptables/Prix unitaire | line_ids/price_unit | | | | |
| Écritures comptables/Quantité | line_ids/quantity | | | | |
| Écritures comptables/Remise % | line_ids/discount | | | | |
| Écritures comptables/Remise fixe | line_ids/discount_fixed | | | | |
| Écritures comptables/Taxes/ID | line_ids/tax_ids/id | | | | à remplacer |
| Écritures comptables/Taxes | line_ids/tax_ids/id | X | | | à supprimer |
| Écritures comptables/Ligne de répartition de la taxe d'origine/ID | line_ids/tax_repartition_line_id/id | | | | à remplacer |
| Écritures comptables/Ligne de répartition de la taxe d'origine/Taxe |line_ids/tax_repartition_line_id/tax_id | X | | | à supprimer |
| Écritures comptables/Ligne de répartition de la taxe d'origine/Basé sur | line_ids/tax_repartition_line_id/repartition_type | X | | | à supprimer |
| Écritures comptables/Ligne de répartition de la taxe d'origine/Type de documents | line_ids/tax_repartition_line_id/document_type | X | | |à supprimer |
| Nom | Nom (dev mode) | Ne pas importer | Dès le 1er import | Nom de colonne pour import | Remplacements |
|----------|----------------------------------------------------------- | ----------------| ------------------| ---------------------------- | ---------------------------- |
| ID | id | | X | | |
| Extourne/ID | reversal_move_id/id | | X | | |
| Type | move_type | | X | | |
| Statut | state | | X | | |
| Date d'échéance | invoice_date_due | | X | | |
| Date | date | | X | | |
| Date de facturation | invoice_date | | X | | |
| Journal/ID | journal_id/id | | X | | à remplacer |
| Journal/Nom du journal | journal_id/name | | X | | à supprimer |
| Numéro | name | | X | | |
| Référence | ref | | X | | |
| Référence du paiement | payment_ref | | X | | |
| Partenaire/ID | partner_id/id | | X | | |
| Partenaire/Nom | partner_id/name | | X | | |
| Paiements/ID | id | | X | | |
| Paiements/ID | id | | X | | |
| Bon de commande / ID | id | | X | | |
| Note de frais/ID | | X | | |
| Note de frais/ID | | X | | |
| Écritures comptables/ID | line_ids/id | | X | | |
| Écritures comptables/Type d'affichage | line_ids/display_type | | X | | doit etre présent sur ttes les lignes |
| Écritures comptables/Pièce comptable/ID | line_ids/move_id/id | X | | | |
| Écritures comptables/Compte/Code | line_ids/account_id/code | | X | Écritures comptables/Compte | à tester |
| Écritures comptables/Libellé | line_ids/name | | X | | |
| Écritures comptables/Date d'échéance | line_ids/date_maturity | | X | | |
| Écritures comptables/Date de début | line_ids/start_date | | X | | |
| Écritures comptables/Date de fin | line_ids/end_date | | X | | |
| Écritures comptables/Ligne d'avoir/ID | line_ids/refund_line_ids/id | | X | | |
| Écritures comptables/Partenaire/ID | line_ids/partner_id/id | | x | | à vérifier |
| Écritures comptables/Unité de mesure/ID | line_ids/product_uom_id/id | | x | | |
| Écritures comptables/Débit | line_ids/debit | | | | |
| Écritures comptables/Crédit | line_ids/credit | | | | |
| Écritures comptables/Produit/ID | line_ids/product_id/id | | | | |
| Écritures comptables/Prix unitaire | line_ids/price_unit | | | | |
| Écritures comptables/Quantité | line_ids/quantity | | | | |
| Écritures comptables/Remise % | line_ids/discount | | | | |
| Écritures comptables/Remise fixe | line_ids/discount_fixed | | | | |
| Écritures comptables/Taxes/ID | line_ids/tax_ids/id | | | | à remplacer |
| Écritures comptables/Taxes | line_ids/tax_ids/id | X | | | à supprimer |
| Écritures comptables/Ligne de répartition de la taxe d'origine/ID | line_ids/tax_repartition_line_id/id | | | | à remplacer |
| Écritures comptables/Ligne de répartition de la taxe d'origine/Taxe |line_ids/tax_repartition_line_id/tax_id | X | | | à supprimer |
| Écritures comptables/Ligne de répartition de la taxe d'origine/Basé sur | line_ids/tax_repartition_line_id/repartition_type | X | | | à supprimer |
| Écritures comptables/Ligne de répartition de la taxe d'origine/Type de documents | line_ids/tax_repartition_line_id/document_type | X | | |à supprimer |
### Migrate bank statements
@ -232,8 +254,79 @@ On fait 2 imports successifs:
### Migrate sale.order
| Nom | Nom (mode développeur) | Nouveau nom de colonne | Changements à faire |
| ------ | ---------------------------------------------------------- | ----------------------------- | ---------------------------- |
| ID externe
| Adresse de facturation/ID externe | | | |
| Adresse de livraison/ID externe | | | |
| Client
| Client/ID externe
| Date de création
| Date de la commande
| Date de livraison
| Lignes de la commande/ID externe
| Lignes de la commande/Lignes de facture/ID externe | | Fusionner les valeurs dans une même cellule par ligne de commande, avec la virgule comme séparateur
| Lignes de la commande/Article/ID externe | | Lignes de la commande/Produit/ID externe |  |
| Lignes de la commande/Description | | Lignes de commande/Description | |
| Lignes de la commande/Est un acompte
| Lignes de la commande/Est une dépense
| Lignes de la commande/Est une livraison
| Lignes de la commande/Prix unitaire
| Lignes de la commande/Quantité
| Lignes de la commande/Remise %
| Lignes de la commande/Séquence
| Lignes de la commande/Taxes/ID externe | | Remplacer les ids |
| Lignes de la commande/Type d'affichage
| Lignes de la commande/Unité de mesure/ID externe
| Lignes de la commande/Statut | | Statut | Remplacer |
| Référence client |
| Référence commande |
### Migrate purchase.order
### Migrate hr.expense
| Nom | Nom (mode développeur) | Nouveau nom de colonne | Changements à faire |
| ------ | ---------------------------------------------------------- | ----------------------------- | ---------------------------- |
| ID externe
| Article/ID externe | product_id/id | Catégorie/ID externe | |
| Prix unitaire
| Quantité
| Taxes/ID externe | tax_ids/id
| Payé par | payment_mode
| Référence de la facture | ref
| Date de la dépense | date
| Compte/Code | account_id/code | Compte | |
| Employé/ID externe | employee_id/id
| Description | name
| Notes... | description
# Migrate hr.payroll.structure
### Migrate hr.contract
| Nom | Nom (mode développeur) | Nouveau nom de colonne | Changements à faire |
| ------ | ---------------------------------------------------------- | ----------------------------- | ---------------------------- |
| Id externe | id | | |
| Actif | active | | |
| Date de début | date_start | | |
| Date de fin | date_end | | |
| Employé | | | |
| Employee/ID externe | employee_id | | |
| Fin de la période d'essai | trial_end_date | | |
| Journal des salaires/ID externe | journal_id | | |
| Notes | notes | | |
| Poste occupé/Id externe | job_id | | |
| Référence du contrat | name | | |
| Salaire | wage | | |
| Statut | state | | |
| Structure salariale/ID externe | struct_id/id | | |
| Type de structure de salaire | structure_type_id/id | | |
| Paie plannifiée | | | |
| Heures de travail/ID externe | resource_calendar_id/id | | |
### Migrate hr.payroll
### Import account.move state
| Nom | Nom (dev_mode) |
|-------------|------------------------------------|

View File

@ -7,7 +7,7 @@
"maintainers": ["makayabou"],
"website": "https://git.legaragenumerique.fr",
"depends": [
"account",
"sale_stock",
],
"license": "LGPL-3",
}

View File

@ -3,3 +3,4 @@ from . import statement_line
from . import account_move
from . import account_move_line
from . import account_payment
from . import sale_order

View File

@ -1,5 +1,5 @@
from odoo import models, fields, api
from odoo.exceptions import UserError
from odoo import models, _, fields, api
from odoo.exceptions import UserError, ValidationError
import json
import base64
import logging
@ -23,3 +23,16 @@ class AccountPayment(models.Model):
return super().write(vals)
_logger.debug("call raw write for account_payment")
return models.Model.write(self, vals)
@api.constrains('payment_method_line_id')
def _check_payment_method_line_id(self):
''' Ensure the 'payment_method_line_id' field is not null.
Can't be done using the regular 'required=True' because the field is a computed editable stored one.
'''
for pay in self:
if not pay.payment_method_line_id:
_logger.debug("no payment_method_line_id on payment %s on %s" % (pay.memo, pay.date))
raise ValidationError(_("Please define a payment method line on your payment."))
elif pay.payment_method_line_id.journal_id and pay.payment_method_line_id.journal_id != pay.journal_id:
_logger.debug("inadequat payment_method_line %s for journal %s on payment %s on %s" % (pay.payment_method_line_id.id, pay.journal_id.name, pay.memo, pay.date))
raise ValidationError(_("The selected payment method is not available for this payment, please select the payment method again."))

View File

@ -0,0 +1,23 @@
from odoo import models, fields, api
from odoo.exceptions import UserError
import json
import base64
import logging
_logger = logging.getLogger(__name__)
SALE_ORDER_STATE = [
('draft', "Quotation"),
('sent', "Quotation Sent"),
('sale', "Sales Order"),
('cancel', "Cancelled"),
]
class SaleOrder(models.Model):
_inherit = 'sale.order'
state = fields.Selection(
selection=SALE_ORDER_STATE,
string="Status",
readonly=False, copy=False, index=True,
tracking=3,
default='draft')