Skip to content
Extraits de code Groupes Projets
Valider da74f3ff rédigé par Juliana's avatar Juliana
Parcourir les fichiers

Add info c&c on account + report account

parent 63d411d9
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -2,3 +2,4 @@ ...@@ -2,3 +2,4 @@
from . import models from . import models
from . import controllers from . import controllers
from . import wizard
\ No newline at end of file
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
"views/vracoop_sale_retrait_views.xml", "views/vracoop_sale_retrait_views.xml",
"views/vracoop_templates.xml", "views/vracoop_templates.xml",
"views/sale_order.xml", "views/sale_order.xml",
"views/delivery_views.xml" "views/delivery_views.xml",
"views/account_invoice_views.xml",
"report/account_invoice_template.xml"
] ]
} }
...@@ -5,4 +5,5 @@ from . import vracoop_point_retrait ...@@ -5,4 +5,5 @@ from . import vracoop_point_retrait
from . import vracoop_retrait_time from . import vracoop_retrait_time
from . import vracoop_retrait_suivi from . import vracoop_retrait_suivi
from . import sale_order from . import sale_order
from . import account_invoice
from . import delivery from . import delivery
\ No newline at end of file
# Copyright 2021 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
from datetime import datetime
class AccountInvoice(models.Model):
_inherit = 'account.invoice'
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
vracoop_point_retrait_id = fields.Many2one(
comodel_name='vracoop.point.retrait',
string="Point retrait")
day_retrait = fields.Date("Jour du retrait")
hour_retrait = fields.Float("Heure du retrait")
carrier_point_retrait = fields.Boolean(
string='Est un point retrait')
# ------------------------------------------------------
# SQL Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# Default methods
# ------------------------------------------------------
# ------------------------------------------------------
# Computed fields / Search Fields
# ------------------------------------------------------
# ------------------------------------------------------
# Onchange / Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# CRUD methods (ORM overrides)
# ------------------------------------------------------
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
# ------------------------------------------------------
# Business methods
# ------------------------------------------------------
# © 2019 Le Filament (<http://www.le-filament.com>) # © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields from odoo import models, fields, api
from datetime import datetime from datetime import datetime
class SaleOrder(models.Model): class SaleOrder(models.Model):
...@@ -43,3 +43,15 @@ class SaleOrder(models.Model): ...@@ -43,3 +43,15 @@ class SaleOrder(models.Model):
'vracoop_point_retrait_id': retrait.id}) 'vracoop_point_retrait_id': retrait.id})
return True return True
@api.multi
def _prepare_invoice(self):
self.ensure_one()
res = super(SaleOrder, self)._prepare_invoice()
res.update({
'vracoop_point_retrait_id': self.vracoop_point_retrait_id.id,
'day_retrait': self.day_retrait,
'hour_retrait': self.hour_retrait,
'carrier_point_retrait': self.carrier_point_retrait
})
return res
\ No newline at end of file
...@@ -2,14 +2,8 @@ ...@@ -2,14 +2,8 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api from odoo import models, fields, api
import pytz from dateutil.rrule import rrule, DAILY, MINUTELY
# import dateutil.rrule as rrule from dateutil.relativedelta import relativedelta
# from datetime import date
from dateutil.relativedelta import *
from dateutil.easter import *
from dateutil.rrule import rrule, DAILY, MINUTELY, rruleset
from dateutil.parser import *
# from datetime import *
from datetime import datetime, timedelta from datetime import datetime, timedelta
from pytz import timezone from pytz import timezone
...@@ -67,6 +61,8 @@ class VracoopPointRetrait(models.Model): ...@@ -67,6 +61,8 @@ class VracoopPointRetrait(models.Model):
"Nombre de retrait max par tranche horaire") "Nombre de retrait max par tranche horaire")
nb_day_available = fields.Integer( nb_day_available = fields.Integer(
"Nombre de jours pour commande", default=7) "Nombre de jours pour commande", default=7)
nb_hours_preparation = fields.Float(
"Nombre d'heures de préparation", default=0.0)
@api.multi @api.multi
def slot_calculate(self): def slot_calculate(self):
...@@ -103,10 +99,11 @@ class VracoopPointRetrait(models.Model): ...@@ -103,10 +99,11 @@ class VracoopPointRetrait(models.Model):
# Liste des jours où je peux récupérer la commande # Liste des jours où je peux récupérer la commande
# en fonction nombre de jour dispo sur la fiche du point retrait # en fonction nombre de jour dispo sur la fiche du point retrait
first_day = datetime.today() + relativedelta(hours=rec.nb_hours_preparation)
list_week = list(rrule( list_week = list(rrule(
DAILY, DAILY,
count=count_day, count=count_day,
dtstart=datetime.today())) dtstart=first_day))
for week in list_week: for week in list_week:
# On exclut les jours où la journée # On exclut les jours où la journée
...@@ -172,7 +169,7 @@ class VracoopPointRetrait(models.Model): ...@@ -172,7 +169,7 @@ class VracoopPointRetrait(models.Model):
# Heure disponible pour un retrait # Heure disponible pour un retrait
# en fonction du temps de préparation # en fonction du temps de préparation
today_hour_available = today_datetime + timedelta( today_hour_available = today_datetime + timedelta(
hours=corresponding_line.preparation_time) hours=(corresponding_line.preparation_time + rec.nb_hours_preparation))
# Boucle pour les créneaux du matin # Boucle pour les créneaux du matin
for slot_elem in list_slot_per_day_morning: for slot_elem in list_slot_per_day_morning:
...@@ -194,7 +191,8 @@ class VracoopPointRetrait(models.Model): ...@@ -194,7 +191,8 @@ class VracoopPointRetrait(models.Model):
last_slot = slot_elem_last.strftime("%H:%M") last_slot = slot_elem_last.strftime("%H:%M")
# Si le jour est égal à la date du jour # Si le jour est égal à la date du jour
if slot_elem.date() == today_datetime.date(): day_first = today_datetime.date() + relativedelta(hours=rec.nb_hours_preparation)
if slot_elem.date() == day_first:
if (slot_elem_last > last_morning_hour_week): if (slot_elem_last > last_morning_hour_week):
if (today_hour_available > last_morning_hour_week): if (today_hour_available > last_morning_hour_week):
continue continue
......
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="report_invoice_document" inherit_id="account.report_invoice_document">
<p t-if="o.reference" position="before">
<p t-if="o.vracoop_point_retrait_id">
Point de retrait: <span t-field="o.vracoop_point_retrait_id"/><br/>
Jour de retrait: <span t-field="o.day_retrait"/><br/>
Heure de retrait: <span t-field="o.hour_retrait" t-options= '{"widget": "float_time"}'/>
</p>
</p>
</template>
</data>
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="invoice_form" model="ir.ui.view">
<field name="name">account.invoice.form.view.with_retrait</field>
<field name="model">account.invoice</field>
<field name="inherit_id" ref="account.invoice_form"/>
<field name="arch" type="xml">
<data>
<field name="payment_term_id" position="after">
<field name="carrier_point_retrait" invisible="1"/>
<field name="vracoop_point_retrait_id" attrs="{'invisible': [('carrier_point_retrait', '=', False)]}"/>
<field name="day_retrait" attrs="{'invisible': [('carrier_point_retrait', '=', False)]}" />
<field name="hour_retrait" widget="float_time" attrs="{'invisible': [('carrier_point_retrait', '=', False)]}"/>
</field>>
</data>
</field>
</record>
</data>
</odoo>
\ No newline at end of file
...@@ -98,6 +98,7 @@ ...@@ -98,6 +98,7 @@
<group> <group>
<field name="nb_max_retrait"/> <field name="nb_max_retrait"/>
<field name="nb_day_available"/> <field name="nb_day_available"/>
<field name="nb_hours_preparation"/>
</group> </group>
</group> </group>
<notebook> <notebook>
......
# Copyright 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import sale_make_invoice_advance
Fichier ajouté
Fichier ajouté
# Copyright 2021 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models, _
class SaleAdvancePaymentInv(models.TransientModel):
_inherit = "sale.advance.payment.inv"
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
@api.multi
def _create_invoice(self, order, so_line, amount):
inv = super(SaleAdvancePaymentInv, self)._create_invoice(order, so_line, amount)
inv.write({
'vracoop_point_retrait_id': order.vracoop_point_retrait_id.id,
'day_retrait': order.day_retrait,
'hour_retrait': order.hour_retrait,
'carrier_point_retrait': order.carrier_point_retrait
})
return inv
# ------------------------------------------------------
# SQL Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# Default methods
# ------------------------------------------------------
# ------------------------------------------------------
# Computed fields / Search Fields
# ------------------------------------------------------
# ------------------------------------------------------
# Onchange / Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# CRUD methods (ORM overrides)
# ------------------------------------------------------
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
# ------------------------------------------------------
# Business methods
# ------------------------------------------------------
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter