← Back to team overview

avanzosc team mailing list archive

Re: [Merge] lp:~alfredodelafuente/avanzosc/dos_services_to_invoice into lp:~avanzosc-security-team/avanzosc/72horas

 

Review: Needs Fixing code review

Sólo un pequeño error en comentarios inline.

Un saludo

Diff comments:

> === modified file 'dos_services_to_invoice/__init__.py'
> --- dos_services_to_invoice/__init__.py	2014-06-11 10:23:47 +0000
> +++ dos_services_to_invoice/__init__.py	2014-06-25 13:59:59 +0000
> @@ -18,10 +18,4 @@
>  #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
>  #
>  ##############################################################################
> -
> -
> -import product
> -import sale
> -import sale_order_line
> -
> -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
> +from . import models
> \ No newline at end of file
> 
> === modified file 'dos_services_to_invoice/__openerp__.py'
> --- dos_services_to_invoice/__openerp__.py	2014-06-11 10:23:47 +0000
> +++ dos_services_to_invoice/__openerp__.py	2014-06-25 13:59:59 +0000
> @@ -18,20 +18,18 @@
>  #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
>  #
>  ##############################################################################
> -
> -
>  {
> -    "name" : "DOS Services To Invoice",
> -    "version" : "1.0",
> -    "author" : "DOS",
> -    "category" : "Product, Sales",
> -    "website" : "www.dos-sl.es",
> -    "description": "This module allows you to add services to invoice on the products.",
> -    "depends" : ['product', 'sale', 'dos_stock_warehouse_additional_info', 'dos_product_additional_info'],
> -    "init_xml" : [],
> -    "update_xml" : ['product_view.xml', 'sale_order_line_view.xml'],
> -    "active": False,
> +    "name": "DOS Services To Invoice",
> +    "version": "1.0",
> +    "author": "DOS",
> +    "category": "Product, Sales",
> +    "website": "www.dos-sl.es",
> +    "description": """
> +    This module allows you to add services to invoice on the products.
> +    """,
> +    "depends": ['product', 'sale', 'dos_stock_warehouse_additional_info',
> +                'dos_product_additional_info',
> +                ],
> +    "data": ['view/product_view.xml', 'view/sale_order_line_view.xml'],
>      "installable": True
>  }
> -
> -
> 
> === added directory 'dos_services_to_invoice/models'
> === added file 'dos_services_to_invoice/models/__init__.py'
> --- dos_services_to_invoice/models/__init__.py	1970-01-01 00:00:00 +0000
> +++ dos_services_to_invoice/models/__init__.py	2014-06-25 13:59:59 +0000
> @@ -0,0 +1,22 @@
> +# -*- coding: utf-8 -*-
> +##############################################################################
> +#
> +#    OpenERP, Open Source Management Solution
> +#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
> +#
> +#    This program is free software: you can redistribute it and/or modify
> +#    it under the terms of the GNU Affero General Public License as
> +#    published by the Free Software Foundation, either version 3 of the
> +#    License, or (at your option) any later version.
> +#
> +#    This program is distributed in the hope that it will be useful,
> +#    but WITHOUT ANY WARRANTY; without even the implied warranty of
> +#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +#    GNU Affero General Public License for more details.
> +#
> +#    You should have received a copy of the GNU Affero General Public License
> +#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +#
> +##############################################################################
> +from . import product
> +from . import sale
> \ No newline at end of file
> 
> === added file 'dos_services_to_invoice/models/product.py'
> --- dos_services_to_invoice/models/product.py	1970-01-01 00:00:00 +0000
> +++ dos_services_to_invoice/models/product.py	2014-06-25 13:59:59 +0000
> @@ -0,0 +1,39 @@
> +# -*- coding: utf-8 -*-
> +##############################################################################
> +#
> +#    OpenERP, Open Source Management Solution
> +#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
> +#
> +#    This program is free software: you can redistribute it and/or modify
> +#    it under the terms of the GNU Affero General Public License as
> +#    published by the Free Software Foundation, either version 3 of the
> +#    License, or (at your option) any later version.
> +#
> +#    This program is distributed in the hope that it will be useful,
> +#    but WITHOUT ANY WARRANTY; without even the implied warranty of
> +#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +#    GNU Affero General Public License for more details.
> +#
> +#    You should have received a copy of the GNU Affero General Public License
> +#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +#
> +##############################################################################
> +
> +from openerp.osv import orm, fields
> +from openerp.tools.translate import _
> +
> +
> +class ProductProduct(orm.Model):
> +    _inherit = 'product.product'
> +
> +    _columns = {
> +        'product_services_ids': fields.many2many('product.product',
> +                                                 'product_services_rel',
> +                                                 'product_id',
> +                                                 'product_service_id',
> +                                                 'Services',
> +                                                 help="This is the list "
> +                                                 "of services to be invoiced "
> +                                                 "after the sale of the "
> +                                                 "product."),
> +    }
> 
> === added file 'dos_services_to_invoice/models/sale.py'
> --- dos_services_to_invoice/models/sale.py	1970-01-01 00:00:00 +0000
> +++ dos_services_to_invoice/models/sale.py	2014-06-25 13:59:59 +0000
> @@ -0,0 +1,118 @@
> +# -*- coding: utf-8 -*-
> +##############################################################################
> +#
> +#    OpenERP, Open Source Management Solution
> +#    Copyright (C) 2004-2010 DOS (<http://www.dos-sl.es>).
> +#
> +#    This program is free software: you can redistribute it and/or modify
> +#    it under the terms of the GNU Affero General Public License as
> +#    published by the Free Software Foundation, either version 3 of the
> +#    License, or (at your option) any later version.
> +#
> +#    This program is distributed in the hope that it will be useful,
> +#    but WITHOUT ANY WARRANTY; without even the implied warranty of
> +#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +#    GNU Affero General Public License for more details.
> +#
> +#    You should have received a copy of the GNU Affero General Public License
> +#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +#
> +##############################################################################
> +
> +from openerp.osv import orm, fields
> +from openerp.tools.translate import _
> +from . import time

import time

> +
> +
> +class SaleOrder(orm.Model):
> +    _inherit = 'sale.order'
> +
> +    def action_ship_create(self, cr, uid, ids, *args):
> +        result = super(SaleOrder, self).action_ship_create(cr, uid, ids, *args)
> +        stock_move_obj = self.pool['stock.move']
> +        for order in self.browse(cr, uid, ids, context={}):
> +            output_id = order.shop_id.warehouse_id.lot_rented_id.id
> +            for line in order.order_line:
> +                # Si el producto es alquilado
> +                if line.rented:
> +                    # Buscamos líneas de albarán generadas del pedido
> +                    condition = [('sale_line_id', '=', line.id)]
> +                    stock_move_ids = stock_move_obj.search(cr, uid, condition)
> +                    # Modificamos líneas de albarán con ubicación de alquilados
> +                    vals = {'location_dest_id': output_id}
> +                    stock_move_obj.write(cr, uid, stock_move_ids, vals)
> +        return result
> +
> +
> +class SaleOrderLine(orm.Model):
> +    _inherit = 'sale.order.line'
> +
> +    _columns = {
> +        'rented': fields.boolean('Rental', select=True, help="Indicates if "
> +                                 "the product is going to be rented."),
> +    }
> +
> +    def rented_change(self, cr, uid, ids, product_id, contract_id=False,
> +                      num_cabins=0, rented=False):
> +        result = {}
> +        domain = {}
> +        warning = {}
> +        result['price_unit'] = False
> +        result['discount'] = False
> +        if product_id and contract_id:
> +            product_obj = self.pool['product.product']
> +            contract_obj = self.pool['contract.contract']
> +            product = product_obj.browse(cr, uid, product_id)
> +            contract = contract_obj.browse(cr, uid, contract_id)
> +            # Precio producto si es una sim
> +            if product_obj._is_sim(product.categ_id):
> +                # Obtenemos precios segun reglas definidas
> +                fixedprice = contract_obj.get_fixed_price(cr, uid, contract.id,
> +                                                          product.id)
> +                extcabinprice = contract_obj.get_extra_cabin_price(
> +                    cr, uid, contract.id, product.id)
> +                diff_price = contract_obj.get_differential_price(
> +                    cr, uid, contract.id, product.id)
> +                price_cabins = num_cabins > 1 and ((num_cabins - 1) *
> +                                                   extcabinprice) or 0
> +                price_unit = fixedprice + price_cabins
> +                discount = diff_price or 0
> +            # Precio producto si es un enlace
> +            elif product_obj._is_link(product.categ_id):
> +                # Obtenemos precios segun reglas definidas
> +                fixlink_price = contract_obj.get_fixed_link_price(
> +                    cr, uid, contract.id, None, product.id)
> +                lkprice = contract_obj.get_differential_link_price(
> +                    cr, uid, contract.id, None, product.id)
> +                price_unit = fixlink_price or product.list_price
> +                # El tipo de venta no es un requisito para aplicar el descuento
> +                # discount = rented and differential_link_price or 0
> +                discount = lkprice or 0
> +            # Precio producto si es un pack
> +            elif product_obj._is_pack(product.categ_id):
> +                prodsim_id, prodlink_id = product_obj.pack_components(product)
> +                # Obtenemos precios segun reglas definidas
> +                fixedprice = contract_obj.get_fixed_price(
> +                    cr, uid, contract.id, prodsim_id, prodlink_id)
> +                cabin_price = contract_obj.get_extra_cabin_price(
> +                    cr, uid, contract.id, prodsim_id, prodlink_id)
> +                diff_price = contract_obj.get_differential_price(
> +                    cr, uid, contract.id, prodsim_id, prodlink_id)
> +                fixlinkprice = contract_obj.get_fixed_link_price(
> +                    cr, uid, contract.id, prodsim_id, prodlink_id)
> +                dlprice = contract_obj.get_differential_link_price(
> +                    cr, uid, contract.id, prodsim_id, prodlink_id)
> +                extra_cabin = ((num_cabins - 1) * cabin_price)
> +                price_cabins = num_cabins > 1 and extra_cabin or 0
> +                price_sim = fixedprice + price_cabins
> +                price_sim = price_sim - (price_sim * diff_price / 100)
> +                price_link = fixlinkprice or product.list_price
> +                # El tipo de venta no es un requisito para aplicar el descuento
> +                # if rented:
> +                price_link2 = (price_link * dlprice / 100)
> +                price_link = price_link - price_link2
> +                price_unit = price_sim + price_link
> +                discount = 0
> +            result['price_unit'] = price_unit
> +            result['discount'] = discount
> +        return {'value': result, 'domain': domain, 'warning': warning}
> 
> === removed file 'dos_services_to_invoice/product.py'
> --- dos_services_to_invoice/product.py	2014-06-11 10:23:47 +0000
> +++ dos_services_to_invoice/product.py	1970-01-01 00:00:00 +0000
> @@ -1,35 +0,0 @@
> -# -*- coding: utf-8 -*-
> -##############################################################################
> -#
> -#    OpenERP, Open Source Management Solution
> -#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
> -#
> -#    This program is free software: you can redistribute it and/or modify
> -#    it under the terms of the GNU Affero General Public License as
> -#    published by the Free Software Foundation, either version 3 of the
> -#    License, or (at your option) any later version.
> -#
> -#    This program is distributed in the hope that it will be useful,
> -#    but WITHOUT ANY WARRANTY; without even the implied warranty of
> -#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> -#    GNU Affero General Public License for more details.
> -#
> -#    You should have received a copy of the GNU Affero General Public License
> -#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
> -#
> -##############################################################################
> -
> -from osv import osv, fields
> -import re
> -from tools.translate import _
> -
> -class product_product(osv.osv):
> -
> -	_name = 'product.product'
> -	_inherit = 'product.product'
> -	
> -	_columns = {
> -		'product_services_ids': fields.many2many('product.product', 'product_services_rel', 'product_id', 'product_service_id', 'Services', help="This is the list of services to be invoiced after the sale of the product."),
> -	}
> -
> -product_product()
> 
> === removed file 'dos_services_to_invoice/product_view.xml'
> --- dos_services_to_invoice/product_view.xml	2014-06-11 10:23:47 +0000
> +++ dos_services_to_invoice/product_view.xml	1970-01-01 00:00:00 +0000
> @@ -1,24 +0,0 @@
> -<?xml version="1.0"?>
> -<openerp>
> -	<data> 
> -	
> -		<!-- Product Inherit Form View -->
> -		<record id="view_product_services_form" model="ir.ui.view">
> -			<field name="name">product.services.form</field>
> -			<field name="model">product.product</field>
> -			<field name="inherit_id" ref="product.product_normal_form_view"/>
> -			<field name="type">form</field>
> -			<field name="arch" type="xml">
> -				<page string="Packaging" position="after">
> -					<page string="Services">
> -						<field name="product_services_ids" 
> -							   colspan="4" 
> -							   domain="[('type','=','service')]" 
> -							   nolabel="1" 
> -						/>
> -					</page>
> -				</page>
> -			</field>
> -		</record>
> -	</data>
> -</openerp>
> 
> === removed file 'dos_services_to_invoice/sale.py'
> --- dos_services_to_invoice/sale.py	2014-06-11 10:23:47 +0000
> +++ dos_services_to_invoice/sale.py	1970-01-01 00:00:00 +0000
> @@ -1,46 +0,0 @@
> -# -*- coding: utf-8 -*-
> -##############################################################################
> -#
> -#    OpenERP, Open Source Management Solution
> -#    Copyright (C) 2004-2010 DOS (<http://www.dos-sl.es>).
> -#
> -#    This program is free software: you can redistribute it and/or modify
> -#    it under the terms of the GNU Affero General Public License as
> -#    published by the Free Software Foundation, either version 3 of the
> -#    License, or (at your option) any later version.
> -#
> -#    This program is distributed in the hope that it will be useful,
> -#    but WITHOUT ANY WARRANTY; without even the implied warranty of
> -#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> -#    GNU Affero General Public License for more details.
> -#
> -#    You should have received a copy of the GNU Affero General Public License
> -#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
> -#
> -##############################################################################
> -
> -from osv import osv
> -from osv import fields
> -from tools.translate import _
> -
> -
> -class sale_order(osv.osv):
> -
> -	_inherit ="sale.order"
> -	
> -
> -	def action_ship_create(self, cr, uid, ids, *args):
> -		result = super(sale_order, self).action_ship_create(cr, uid, ids, *args)
> -		stock_move_obj = self.pool.get('stock.move')
> -		for order in self.browse(cr, uid, ids, context={}):
> -			output_id = order.shop_id.warehouse_id.lot_rented_id.id
> -			for line in order.order_line:
> -				#Si el producto es alquilado
> -				if line.rented:
> -					#Buscamos líneas de albarán generadas del pedido
> -					stock_move_ids = stock_move_obj.search(cr, uid, [('sale_line_id', '=', line.id)])
> -					#Modificamos líneas de albarán con ubicación de alquilados
> -					stock_move_obj.write(cr, uid, stock_move_ids, {'location_dest_id': output_id})
> -		return result
> -		
> -sale_order()
> \ No newline at end of file
> 
> === removed file 'dos_services_to_invoice/sale_order_line.py'
> --- dos_services_to_invoice/sale_order_line.py	2014-06-11 10:23:47 +0000
> +++ dos_services_to_invoice/sale_order_line.py	1970-01-01 00:00:00 +0000
> @@ -1,116 +0,0 @@
> -# -*- coding: utf-8 -*-
> -##############################################################################
> -#
> -#    OpenERP, Open Source Management Solution
> -#    Copyright (C) 2004-2010 DOS (<http://www.dos-sl.es>).
> -#
> -#    This program is free software: you can redistribute it and/or modify
> -#    it under the terms of the GNU Affero General Public License as
> -#    published by the Free Software Foundation, either version 3 of the
> -#    License, or (at your option) any later version.
> -#
> -#    This program is distributed in the hope that it will be useful,
> -#    but WITHOUT ANY WARRANTY; without even the implied warranty of
> -#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> -#    GNU Affero General Public License for more details.
> -#
> -#    You should have received a copy of the GNU Affero General Public License
> -#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
> -#
> -##############################################################################
> -
> -from osv import osv
> -from osv import fields
> -from tools.translate import _
> -import time
> -
> -class sale_order_line(osv.osv): 
> -
> -	_name = 'sale.order.line'
> -	_inherit = 'sale.order.line'
> -	
> -	_columns = {
> -		'rented': fields.boolean('Rental', select=True, help="Indicates if the product is going to be rented."),
> -	}
> -	
> -	def rented_change(self, cr, uid, ids, product_id, contract_id=False, num_cabins=0, rented=False):
> -	
> -		result = {}
> -		domain = {}
> -		warning = {}
> -		
> -		result['price_unit'] = False
> -		result['discount'] = False
> -		
> -		if product_id and contract_id:
> -			
> -			product_obj = self.pool.get('product.product')
> -			contract_obj = self.pool.get('contract.contract')
> -			
> -			product = product_obj.browse(cr, uid, product_id)
> -			contract = contract_obj.browse(cr, uid, contract_id)
> -			
> -			# Precio producto si es una sim
> -			if product_obj._is_sim(product.categ_id):
> -				#Obtenemos precios segun reglas definidas
> -				fixed_price = contract_obj.get_fixed_price(cr, uid, contract.id, product.id)
> -				extra_cabin_price = contract_obj.get_extra_cabin_price(cr, uid, contract.id, product.id)
> -				differential_price = contract_obj.get_differential_price(cr, uid, contract.id, product.id)
> -				
> -				price_cabins = num_cabins > 1 and ((num_cabins -1) * extra_cabin_price) or 0
> -				price_unit = fixed_price + price_cabins
> -				discount = differential_price or 0
> -				
> -			# Precio producto si es un enlace
> -			elif product_obj._is_link(product.categ_id):
> -				#Obtenemos precios segun reglas definidas
> -				fixed_link_price = contract_obj.get_fixed_link_price(cr, uid, contract.id, None, product.id)
> -				differential_link_price = contract_obj.get_differential_link_price(cr, uid, contract.id, None, product.id)
> -				
> -				price_unit = fixed_link_price or product.list_price
> -				
> -				# El tipo de venta no es un requisito para aplicar el descuento
> -				# discount = rented and differential_link_price or 0
> -				discount = differential_link_price or 0
> -				
> -			# Precio producto si es un pack
> -			elif product_obj._is_pack(product.categ_id):
> -				
> -				product_sim_id, product_link_id = product_obj.pack_components(product)
> -				
> -				#Obtenemos precios segun reglas definidas
> -				fixed_price = contract_obj.get_fixed_price(cr, uid, contract.id, product_sim_id, product_link_id)
> -				extra_cabin_price = contract_obj.get_extra_cabin_price(cr, uid, contract.id, product_sim_id, product_link_id)
> -				differential_price = contract_obj.get_differential_price(cr, uid, contract.id, product_sim_id, product_link_id)
> -				fixed_link_price = contract_obj.get_fixed_link_price(cr, uid, contract.id, product_sim_id, product_link_id)
> -				differential_link_price = contract_obj.get_differential_link_price(cr, uid, contract.id, product_sim_id, product_link_id)
> -				
> -				price_cabins = num_cabins > 1 and ((num_cabins -1) * extra_cabin_price) or 0
> -				price_sim = fixed_price + price_cabins
> -				price_sim = price_sim - (price_sim * differential_price / 100)
> -				
> -				price_link = fixed_link_price or product.list_price
> -				
> -				# El tipo de venta no es un requisito para aplicar el descuento
> -				# if rented:
> -				price_link = price_link - (price_link * differential_link_price / 100)
> -				
> -				price_unit = price_sim + price_link
> -				discount = 0
> -
> -
> -			result['price_unit'] = price_unit
> -			result['discount'] = discount
> -			
> -		return {'value': result, 'domain': domain, 'warning': warning}
> -	
> -sale_order_line()
> -	
> -
> -
> -
> -
> -
> -
> -
> -
> 
> === removed file 'dos_services_to_invoice/sale_order_line_view.xml'
> --- dos_services_to_invoice/sale_order_line_view.xml	2014-06-11 10:23:47 +0000
> +++ dos_services_to_invoice/sale_order_line_view.xml	1970-01-01 00:00:00 +0000
> @@ -1,23 +0,0 @@
> -<?xml version="1.0"?>
> -<openerp>
> -	<data> 
> -	
> -		<!-- Sale Order Inherit Form View -->
> -		<record model="ir.ui.view" id="view_order_rented_line_form_inherit">
> -			<field name="name">sale.order.rended.line.form.inherit</field>
> -			<field name="model">sale.order</field>
> -			<field name="inherit_id" ref="sale_layout.view_order_form_inherit_1"/>
> -			<field name="type">form</field>
> -			<field name="priority">1</field>
> -			<field name="arch" type="xml">
> -				<xpath expr="/form/notebook/page/field[@name='abstract_line_ids']/form/notebook/page/field[@name='product_packaging']" position="after">		
> -					<field name="rented" on_change="rented_change(product_id, parent.contract_id, num_cabins, rented)" />	
> -                </xpath> 
> -                <xpath expr="/form/notebook/page/field[@name='abstract_line_ids']/tree/field[@name='price_subtotal']" position="after">		
> -					<field name="rented" />	
> -                </xpath> 
> -			</field>
> -		</record>
> -		
> -	</data>
> -</openerp>
> 
> === added directory 'dos_services_to_invoice/views'
> === added file 'dos_services_to_invoice/views/product_view.xml'
> --- dos_services_to_invoice/views/product_view.xml	1970-01-01 00:00:00 +0000
> +++ dos_services_to_invoice/views/product_view.xml	2014-06-25 13:59:59 +0000
> @@ -0,0 +1,20 @@
> +<?xml version="1.0"?>
> +<openerp>
> +	<data> 
> +	
> +		<!-- Product Inherit Form View -->
> +		<record id="view_product_services_form" model="ir.ui.view">
> +			<field name="name">product.services.form</field>
> +			<field name="model">product.product</field>
> +			<field name="inherit_id" ref="product.product_normal_form_view"/>
> +			<field name="arch" type="xml">
> +				<page string="Packaging" position="after">
> +					<page string="Services">
> +						<field name="product_services_ids" colspan="4" 
> +							   domain="[('type','=','service')]" nolabel="1" /> 
> +					</page>
> +				</page>
> +			</field>
> +		</record>
> +	</data>
> +</openerp>
> 
> === added file 'dos_services_to_invoice/views/sale_order_line_view.xml'
> --- dos_services_to_invoice/views/sale_order_line_view.xml	1970-01-01 00:00:00 +0000
> +++ dos_services_to_invoice/views/sale_order_line_view.xml	2014-06-25 13:59:59 +0000
> @@ -0,0 +1,22 @@
> +<?xml version="1.0"?>
> +<openerp>
> +	<data> 
> +	
> +		<!-- Sale Order Inherit Form View -->
> +		<record model="ir.ui.view" id="view_order_rented_line_form_inherit">
> +			<field name="name">sale.order.rended.line.form.inherit</field>
> +			<field name="model">sale.order</field>
> +			<field name="inherit_id" ref="sale_layout.view_order_form_inherit_1"/>
> +			<field name="priority">1</field>
> +			<field name="arch" type="xml">
> +				<field name="product_packaging" position="after">
> +					<field name="rented" on_change="rented_change(product_id, parent.contract_id, num_cabins, rented)" />
> +				</field>
> +				<field name="price_subtotal" position="after">
> +					<field name="rented" />
> +				</field>
> +			</field>
> +		</record>
> +		
> +	</data>
> +</openerp>
> 


-- 
https://code.launchpad.net/~alfredodelafuente/avanzosc/dos_services_to_invoice/+merge/224422
Your team Avanzosc_security is subscribed to branch lp:~avanzosc-security-team/avanzosc/72horas.


Follow ups

References