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

[ADD]Add price 3 digits + Tax + Buyer by PRM

parent 1d6ecc5c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -11,6 +11,7 @@
'data': [
"security/ir.model.access.csv",
# datas
'data/data.xml',
# wizard
'wizard/acc_sale_price_wizard_views.xml',
'wizard/acc_account_wizard_views.xml',
......
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!--
Precisions
-->
<record forcecreate="True" id="decimal_sale_price" model="decimal.precision">
<field name="name">Sale Price</field>
<field name="digits">3</field>
</record>
</data>
</odoo>
......@@ -104,9 +104,13 @@ class AccAccount(models.Model):
readonly=True,
compute='_compute_amount')
# inverse='_inverse_amount_total')
price_kwh = fields.Float("Prix de l'électricité au kWh")
price_kwh = fields.Float(
"Prix de l'électricité au kWh", digits="Sale Price")
power_cons = fields.Float("Consommation locale (index Enedis)")
url = fields.Char("URL", compute="_compute_url", store=True)
tax_tcfe = fields.Float(
"Taxes CPSE/TCF (en €/kWh)",
digits="Sale Price")
@api.model_create_multi
def create(self, vals_list):
......@@ -134,6 +138,7 @@ class AccAccount(models.Model):
for move in self:
total_tax = 0.0
total = 0.0
tax_tcfe = 0.0
for line in move.line_ids:
total += line.price_total
......@@ -141,9 +146,12 @@ class AccAccount(models.Model):
if move.is_tva and move.tax_id:
total_tax = ((total * move.tax_id.amount) / 100)
if move.tax_tcfe > 0:
tax_tcfe = ((total * move.tax_tcfe) / 100)
move.amount_untaxed = total
move.amount_tax = total_tax
move.amount_total = total + total_tax
move.amount_total = total + total_tax + tax_tcfe
def _compute_url(self):
for account in self:
......@@ -174,7 +182,9 @@ class AccAccountLine(models.Model):
quantity = fields.Float(
string="Quantité",
default=1.0)
price_unit = fields.Float(string="Prix unitaire")
price_unit = fields.Float(
string="Prix unitaire",
digits="Sale Price")
currency_id = fields.Many2one(
"res.currency",
string="Devise",
......
......@@ -33,6 +33,9 @@ class AccCounter(models.Model):
acc_account_surplus_count = fields.Integer(
compute="_compute_acc_account_count", string="Nombre de factures surplus producteurs"
)
is_account_auto_activate = fields.Boolean("Facturation de l’autoconsommation automatisée")
is_account_surplus_activate = fields.Boolean("Facturation du surplus automatisée")
# ------------------------------------------------------
# SQL Constraints
# ------------------------------------------------------
......
......@@ -17,13 +17,22 @@ class AccOperation(models.Model):
acc_sale_price_ids = fields.One2many(
"acc.sale.price", "acc_operation_id")
acc_account_ids = fields.One2many(
"acc.account", "acc_operation_id"
"acc.account", "acc_operation_id",
domain=[("is_account_buyer", "=", False)],
string="Factures"
)
acc_account_surplus_ids = fields.One2many(
"acc.account", "acc_operation_id",
domain=[("is_account_buyer", "=", True)],
string="Factures Surplus"
)
acc_account_line_ids = fields.One2many(
"acc.account.line", "acc_operation_id"
)
acc_account_count = fields.Integer(
string="Nombre de factures", compute="_compute_acc_account_count")
tax_tcfe = fields.Float("Taxes CPSE/TCF (en €/kWh)", digits="Sale Price")
# ------------------------------------------------------
# SQL Constraints
# ------------------------------------------------------
......@@ -87,7 +96,6 @@ class AccOperation(models.Model):
return power_tab_by_prod
def create_account(self, date_month, account_periodicity):
result = dict()
account_list = []
date_end = date_utils.end_of(date_month, 'month')
......@@ -109,6 +117,7 @@ class AccOperation(models.Model):
prod_tot = power_tab_by_prod[0]['power'] - power_tab_by_prod[1]['power']
for acc_injection_id in self.acc_injection_ids:
if acc_injection_id.is_account_auto_activate:
power_tab_by_prod = self.get_power_by_prod(acc_injection_id, date_start, date_end)
power_autoprod_percent = ((power_tab_by_prod[0]['power'] - power_tab_by_prod[1]['power']) * 100) / prod_tot
......@@ -135,7 +144,8 @@ class AccOperation(models.Model):
'power_cons': power_month,
'start_date': date_start,
'end_date': date_end,
'price_kwh': price_kwh
'price_kwh': price_kwh,
'tax_tcfe': self.tax_tcfe,
})
# Création de la ligne du mois
......@@ -158,7 +168,6 @@ class AccOperation(models.Model):
return action
def create_account_surplus(self, date_month, account_periodicity):
result = dict()
account_list = []
date_end = date_utils.end_of(date_month, 'month')
......@@ -174,10 +183,11 @@ class AccOperation(models.Model):
['acc_counter_id'], orderby='comp_data_type', lazy=False)
for power_tab_prod in power_tab_by_prod:
injection_id = self.env['acc.counter'].browse(power_tab_prod['acc_counter_id'][0])
if injection_id.is_account_surplus_activate:
price_kwh = self.env['acc.sale.price.buyer'].search([
('acc_operation_id', '=', self.id),
('acc_buyer_id', '=', self.buyer_id.id),
('acc_injection_id', '=', injection_id.id),
('acc_buyer_id', '=', injection_id.buyer_id.id),
('start_date', '<=', date_month),
('end_date', '>=', date_month)
]).price
......@@ -188,12 +198,13 @@ class AccOperation(models.Model):
acc_account = Account.create({
'acc_operation_id': self.id,
'buyer_id': self.buyer_id.id,
'acc_injection_id': power_tab_prod['acc_counter_id'][0],
'acc_injection_id': injection_id.id,
'power_cons': power_tab_prod['power'],
'start_date': date_start,
'end_date': date_end,
'price_kwh': price_kwh,
'is_account_buyer': True
'is_account_buyer': True,
'tax_tcfe': self.tax_tcfe,
})
# Création de la ligne du mois
......
......@@ -34,7 +34,7 @@ class AccSalePrice(models.Model):
end_date = fields.Date("Fin de la période")
currency_id = fields.Many2one(
'res.currency', 'Devise', default=_get_default_currency_id)
price = fields.Float("Tarif")
price = fields.Float("Tarif", digits='Sale Price')
class AccSalePriceBuyer(models.Model):
......@@ -47,10 +47,12 @@ class AccSalePriceBuyer(models.Model):
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
acc_operation_id = fields.Many2one(
"acc.operation",
"Opération",
ondelete="cascade")
acc_injection_id = fields.Many2one(
'acc.counter',
domain=[('is_injection', '=', True)],
string="Point d'injection",
ondelete="cascade"
)
acc_buyer_id = fields.Many2one(
'res.partner',
domain=[('is_buyer_surplus', '=', True)],
......@@ -61,4 +63,4 @@ class AccSalePriceBuyer(models.Model):
end_date = fields.Date("Fin de la période")
currency_id = fields.Many2one(
'res.currency', 'Devise', default=_get_default_currency_id)
price = fields.Float("Tarif")
price = fields.Float("Tarif", digits='Sale Price')
......@@ -192,7 +192,8 @@
<field name="start_date" />
<field name="end_date" />
<field name="power_cons"/>
<field name="price_kwh"/>
<field name="price_kwh" options="{'field_digits': True}"/>
<field name="tax_tcfe" options="{'field_digits': True}"/>
</group>
</group>
<group>
......@@ -213,7 +214,7 @@
options="{'no_create': True}" invisible="1"/>
<field name="description"/>
<field name="quantity"/>
<field name="price_unit" string="Price"/>
<field name="price_unit" string="Price" options="{'field_digits': True}"/>
<field name="is_tva" invisible="1"/>
<field name="tax_id"
options="{'no_create': True}"
......
......@@ -15,12 +15,13 @@
icon="fa-money"
name="action_view_acc_injection_accounts"
context="{'default_acc_injection_id': active_id}"
attrs="{'invisible': [('is_injection', '!=', True)]}"
>
<div class="o_form_field o_stat_info">
<span class="o_stat_value">
<field name="acc_account_surplus_count" />
</span>
<span class="o_stat_text">Factures Surplus producteurs</span>
<span class="o_stat_text">Factures Surplus</span>
</div>
</button>
<button
......@@ -29,6 +30,7 @@
icon="fa-money"
name="action_view_acc_injection_accounts"
context="{'default_acc_injection_id': active_id}"
attrs="{'invisible': [('is_injection', '!=', True)]}"
>
<div class="o_form_field o_stat_info">
<span class="o_stat_value">
......@@ -43,6 +45,7 @@
icon="fa-money"
name="action_view_acc_delivery_accounts"
context="{'default_acc_delivery_id': active_id}"
attrs="{'invisible': [('is_delivery', '!=', True)]}"
>
<div class="o_form_field o_stat_info">
<span class="o_stat_value">
......@@ -56,6 +59,14 @@
<group name="infos" position="after">
<notebook>
<page string="Facturation" name="account">
<group>
<group>
<field name="is_account_auto_activate" widget="boolean_toggle"/>
</group>
<group>
<field name="is_account_surplus_activate" widget="boolean_toggle"/>
</group>
</group>
<field
name="acc_account_delivery_ids"
widget="one2many">
......
......@@ -24,7 +24,6 @@
type="action"
name="%(acc_account.acc_account_surplus_wizard_action)d"
class="btn-primary"
attrs="{'invisible': [('buyer_id', '=', False)]}"
/>
</header>
<div class="oe_title" position="before">
......@@ -67,17 +66,46 @@
</page>
<page string="Facturation" name="account"
attrs="{'invisible': [('is_account_active', '=', False)]}">
<group>
<field name="tax_tcfe" options="{'field_digits': True}"/>
</group>
<field
name="acc_account_ids"
widget="one2many"
context="{'default_acc_operation_id': active_id}">
<tree string="Facturation" editable="bottom">
options="{'no_create': True}"
context="{'default_acc_operation_id': active_id}"
readonly="1">
<tree string="Facturation">
<field name="acc_operation_id" invisible="1"/>
<field name="name"/>
<field name="date"/>
<field name="acc_injection_id"/>
<field name="acc_delivery_id"/>
<field name="amount_total"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="amount_total" sum="Total" />
<field name="is_account_buyer" invisible="1"/>
</tree>
</field>
</page>
<page string="Facturation Surplus" name="account"
attrs="{'invisible': [('is_account_active', '=', False)]}">
<field
name="acc_account_surplus_ids"
widget="one2many"
options="{'no_create': True}"
readonly="1"
context="{'default_acc_operation_id': active_id, 'default_is_account_active': True}">
<tree string="Facturation Surplus">
<field name="acc_operation_id" invisible="1"/>
<field name="is_account_buyer" invisible="1"/>
<field name="name"/>
<field name="date"/>
<field name="acc_injection_id"/>
<field name="buyer_id"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="amount_total" sum="Total"/>
</tree>
</field>
</page>
......
......@@ -17,7 +17,9 @@
<group>
<field name="start_date"/>
<field name="end_date"/>
<field name="price" widget='monetary'/>
<field name="price"
widget='monetary'
options="{'field_digits': True}"/>
<field name="currency_id"/>
</group>
</group>
......@@ -37,7 +39,9 @@
<field name="start_date"/>
<field name="end_date"/>
<field name="currency_id" invisible="1"/>
<field name="price" widget='monetary'/>
<field name="price"
widget="monetary"
options="{'field_digits': True}"/>
</tree>
</field>
</record>
......@@ -62,13 +66,15 @@
<sheet>
<group>
<group>
<field name="acc_operation_id"/>
<field name="acc_injection_id"/>
<field name="acc_buyer_id"/>
</group>
<group>
<field name="start_date"/>
<field name="end_date"/>
<field name="price" widget='monetary'/>
<field name="price"
widget="monetary"
options="{'field_digits': True}"/>
<field name="currency_id"/>
</group>
</group>
......@@ -82,12 +88,14 @@
<field name="model">acc.sale.price.buyer</field>
<field name="arch" type="xml">
<tree string="Prix de vente Acheteur">
<field name="acc_operation_id"/>
<field name="acc_injection_id"/>
<field name="acc_buyer_id"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="currency_id" invisible="1"/>
<field name="price" widget='monetary'/>
<field name="price"
widget="monetary"
options="{'field_digits': True}"/>
</tree>
</field>
</record>
......
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