summaryrefslogtreecommitdiff
path: root/addons/network
diff options
context:
space:
mode:
authorpinky <>2006-12-07 13:41:40 +0000
committerpinky <>2006-12-07 13:41:40 +0000
commita83dce15e0f33145b2eea7e878ae7eacf3aba90a (patch)
treea3d1399cbfebf7d90a8894d97c9b7e0a9d881960 /addons/network
parent004a0b996ff8f269451e07346f71a129a1f3fbaf (diff)
New trunk
bzr revid: pinky-dedd7f8a42bd4557112a0513082691b8590ad6cc
Diffstat (limited to 'addons/network')
-rw-r--r--addons/network/__init__.py1
-rw-r--r--addons/network/__terp__.py13
-rw-r--r--addons/network/network.py164
-rw-r--r--addons/network/network_demo.xml7
-rw-r--r--addons/network/network_report.xml8
-rw-r--r--addons/network/network_view.xml305
-rw-r--r--addons/network/report/material.xml21
-rw-r--r--addons/network/report/material.xsl106
-rw-r--r--addons/network/report/network.xml41
-rw-r--r--addons/network/report/network.xsl143
-rw-r--r--addons/network/report/network_list.xml21
-rw-r--r--addons/network/report/network_list.xsl52
12 files changed, 882 insertions, 0 deletions
diff --git a/addons/network/__init__.py b/addons/network/__init__.py
new file mode 100644
index 00000000000..e82a44ff55b
--- /dev/null
+++ b/addons/network/__init__.py
@@ -0,0 +1 @@
+import network
diff --git a/addons/network/__terp__.py b/addons/network/__terp__.py
new file mode 100644
index 00000000000..e76e59d09f0
--- /dev/null
+++ b/addons/network/__terp__.py
@@ -0,0 +1,13 @@
+{
+ "name" : "Network Management",
+ "version" : "1.0",
+ "author" : "Tiny",
+ "category" : "Enterprise Specific Modules/Information Technology",
+ "depends" : ["base"],
+ "init_xml" : [],
+ "description": "A simple module to encode your networks and materials. Interventions, waranties, software installed, logins, ...",
+ "demo_xml" : ["network_demo.xml"],
+ "update_xml" : ["network_view.xml", "network_report.xml"],
+ "active" : False,
+ "installable": True
+}
diff --git a/addons/network/network.py b/addons/network/network.py
new file mode 100644
index 00000000000..1c7e9268483
--- /dev/null
+++ b/addons/network/network.py
@@ -0,0 +1,164 @@
+##############################################################################
+#
+# Copyright (c) 2005-2006 TINY SPRL. (http://tiny.be) All Rights Reserved.
+# Fabien Pinckaers <fp@tiny.Be>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+##############################################################################
+
+import time
+from osv import fields, osv
+
+#---------------------------------------------------------
+# Type of hardware: Printers, Screens, HD, ....
+#---------------------------------------------------------
+class network_hardware_type(osv.osv):
+ _name = "network.hardware.type"
+ _description = "Hardware type"
+ _columns = {
+ 'name': fields.char('Type of material', size=64, required=True),
+ 'networkable': fields.boolean('Networkable hardware'),
+ }
+ _defaults = {
+ 'networkable': lambda *a: False,
+ }
+network_hardware_type()
+
+#--------------------------------------------------------------
+# A network is composed of all kind of networkable materials
+#--------------------------------------------------------------
+class network_network(osv.osv):
+ _name = 'network.network'
+ _description = 'Network'
+ _columns = {
+ 'name': fields.char('Network name', size=64, required=True),
+ 'range': fields.char('Address range', size=128),
+ 'user_id': fields.many2one('res.users','Onsite Contact person'),
+ 'contact_id': fields.many2one('res.partner', 'Partner', required=True),
+ 'material_ids': fields.one2many('network.material', 'network_id', 'Members'),
+ }
+network_network()
+
+def _calc_warranty(*args):
+ now = list(time.localtime())
+ now[0] += 1
+ return time.strftime('%Y-%m-%d', tuple(now))
+
+#----------------------------------------------------------
+# Materials; computer, printer, switch, ...
+#----------------------------------------------------------
+class network_material(osv.osv):
+ _name = "network.material"
+ _description = "Material"
+ _columns = {
+ 'name': fields.char('Device Name', size=64, required=True),
+ 'ip_addr': fields.char('IP Address', size=16),
+ 'network_id': fields.many2one('network.network', 'Network'),
+ 'supplier': fields.many2one('res.partner', 'Supplier'),
+ 'date': fields.date('Installation Date'),
+ 'warranty': fields.date('Warranty deadline'),
+ 'type': fields.many2one('network.hardware.type',
+ 'Hardware type', required=True),
+ 'note': fields.text('Notes'),
+ 'parent_id': fields.many2one('network.material',
+ 'Parent Material'),
+ 'child_id': fields.one2many('network.material', 'parent_id',
+ 'Childs Materials'),
+ 'software_id': fields.one2many('network.software',
+ 'material_id',
+ 'Installed Software'),
+ 'change_id': fields.one2many('network.changes',
+ 'machine_id',
+ 'Changes on this machine'),
+ }
+ _defaults = {
+ 'date': lambda *a: time.strftime('%Y-%m-%d'),
+ 'warranty': _calc_warranty,
+ }
+network_material()
+
+#----------------------------------------------------------
+# Changes on this machine
+#----------------------------------------------------------
+class network_changes(osv.osv):
+ _name = 'network.changes'
+ _description = 'Network changes'
+ _columns = {
+ 'name': fields.char('Short Description', size=64,
+ required=True),
+ 'description': fields.text('Long Description'),
+ 'date': fields.date('Change date'),
+ 'machine_id': fields.many2one('network.material',
+ 'Machine'),
+ }
+ _defaults = {
+ 'date': lambda *a: time.strftime('%Y-%m-%d'),
+ }
+network_changes()
+
+#----------------------------------------------------------
+# Type of Software; LDAP, Tiny ERP, Postfix
+#----------------------------------------------------------
+class network_soft_type(osv.osv):
+ _name = "network.software.type"
+ _description = "Software type"
+ _columns = {
+ 'name': fields.char('Composant Name', size=64, required=True),
+ 'note': fields.text('Notes'),
+ }
+network_soft_type()
+
+#----------------------------------------------------------
+# A software installed on a material
+#----------------------------------------------------------
+class network_software(osv.osv):
+ _name = "network.software"
+ _description = "Software"
+ _columns = {
+ 'name': fields.char('Composant Name', size=64, required=True),
+ 'material_id': fields.many2one('network.material', 'Material'),
+ 'type': fields.many2one('network.software.type',
+ 'Software Type', required=True),
+ 'version': fields.char('Software version', size=32),
+ 'logpass': fields.one2many('network.software.logpass',
+ 'software_id', 'Login / Password'),
+ 'email': fields.char('Contact Email', size=32),
+ 'date': fields.date('Installation Date', size=32),
+ 'note': fields.text('Notes'),
+ }
+network_software()
+
+#------------------------------------------------------------
+# Couples of login/password
+#------------------------------------------------------------
+class network_software_logpass(osv.osv):
+ _name = "network.software.logpass"
+ _description = "Software login"
+ _rec_name = 'login'
+ _columns = {
+ 'login': fields.char('Login', size=64, required=True),
+ 'password': fields.char('Password', size=64, required=True),
+ 'software_id': fields.many2one('network.software',
+ 'Software', required=True),
+ }
+network_software_logpass()
diff --git a/addons/network/network_demo.xml b/addons/network/network_demo.xml
new file mode 100644
index 00000000000..6586343f1a8
--- /dev/null
+++ b/addons/network/network_demo.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<terp>
+ <data noupdate="1">
+
+
+ </data>
+</terp>
diff --git a/addons/network/network_report.xml b/addons/network/network_report.xml
new file mode 100644
index 00000000000..ffa71a51fa5
--- /dev/null
+++ b/addons/network/network_report.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<terp>
+ <data>
+ <report string="Print Materials" model="network.material" name="network.material.list" xml="network/report/material.xml" xsl="network/report/material.xsl"/>
+ <report string="Print Network Materials" model="network.network" name="network.network.list" xml="network/report/network.xml" xsl="network/report/network.xsl"/>
+ <report string="Print Network List" model="network.network" name="network.network.list2" xml="network/report/network_list.xml" xsl="network/report/network_list.xsl"/>
+ </data>
+</terp>
diff --git a/addons/network/network_view.xml b/addons/network/network_view.xml
new file mode 100644
index 00000000000..7aef2b6c1d6
--- /dev/null
+++ b/addons/network/network_view.xml
@@ -0,0 +1,305 @@
+<?xml version="1.0"?>
+<terp>
+ <data>
+ <menuitem name="Network" groups="admin"/>
+ <menuitem name="Network/Configuration" id="menu_network_definition" groups="admin" sequence="1"/>
+
+ <record model="ir.ui.view" id="edit_network">
+ <field name="name">network.material.form</field>
+ <field name="model">network.material</field>
+ <field name="type">form</field>
+ <field name="priority" eval="1"/>
+ <field name="arch" type="xml">
+ <form string="Network Material">
+ <notebook>
+ <page string="Material Info">
+ <separator string="Informations" colspan="4"/>
+ <field name="name" colspan="3" select="1"/>
+ <field name="type" select="1"/>
+ <field name="supplier" select="1" />
+ <field name="date" select="1"/>
+ <field name="warranty" />
+ <field name="parent_id"/>
+ <field name="network_id"/>
+ <separator string="Softwares" colspan="4"/>
+ <field name="software_id" nolabel="1" colspan="4" widget="one2many_list"/>
+ </page>
+ <page string="Updates">
+ <field name="change_id" nolabel="1" colspan="4" widget="one2many_list" />
+ </page>
+ <page string="Notes">
+ <field name="note" nolabel="1" colspan="4"/>
+ </page>
+ </notebook>
+ </form>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="material_view">
+ <field name="name">network.material.tree</field>
+ <field name="model">network.material</field>
+ <field name="type">tree</field>
+ <field name="field_parent">child_id</field>
+ <field name="arch" type="xml">
+ <tree string="All Network Material">
+ <field name="name"/>
+ <field name="type"/>
+ <field name="supplier" />
+ <field name="date"/>
+ <field name="warranty" />
+ </tree>
+ </field>
+ </record>
+
+ <record model="ir.actions.act_window" id="action_material_tree">
+ <field name="name">network.material.tree</field>
+ <field name="res_model">network.material</field>
+ <field name="view_type">form</field>
+ <field name="domain">[('parent_id','=',False)]</field>
+ </record>
+ <menuitem name="Network/All Materials" id="menu_action_material_tree" action="action_material_tree" groups="admin"/>
+
+ <record model="ir.ui.view" id="material_view_by_network">
+ <field name="name">network.material.tree</field>
+ <field name="model">network.material</field>
+ <field name="type">tree</field>
+ <field name="field_parent">child_id</field>
+ <field name="arch" type="xml">
+ <tree string="Material in this Network">
+ <field name="name"/>
+ <field name="date"/>
+ <field name="type"/>
+ </tree>
+ </field>
+ </record>
+ <record model="ir.actions.act_window" id="tree_by_network">
+ <field name="name">network.material.tree_by_network</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">network.material</field>
+ <field name="view_type">tree</field>
+ <field name="domain">[('network_id', '=', active_id)]</field>
+ <field name="view_id" ref="material_view_by_network"/>
+ </record>
+ <record model="ir.values" id="ir_open_network">
+ <field name="key" eval="'action'" />
+ <field name="key2" eval="'tree_but_open'" />
+ <field name="model" eval="'network.network'"/>
+ <field name="name">Material</field>
+ <field name="value" eval="'ir.actions.act_window,%d'%tree_by_network" />
+ <field name="object" eval="True" />
+ </record>
+ <record model="ir.values" id="ir_open_network2">
+ <field name="key" eval="'action'" />
+ <field name="key2" eval="'client_action_multi'" />
+ <field name="model" eval="'network.network'"/>
+ <field name="name">Material</field>
+ <field name="value"
+ eval="'ir.actions.act_window,%d'%tree_by_network" />
+ <field name="object" eval="True" />
+ </record>
+
+ <record model="ir.actions.act_window" id="edit_material_2click">
+ <field name="name">network.material.edit_material_2click</field>
+ <field name="view_mode">tree,form</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">network.material</field>
+ <field name="view_type">form</field>
+ <field name="domain">[('id', '=', active_id)]</field>
+ <field name="view_id" ref="edit_network" />
+ </record>
+ <record model="ir.values" id="ir_open_network3">
+ <field name="key" eval="'action'" />
+ <field name="key2" eval="'tree_but_open'" />
+ <field name="model" eval="'network.material'" />
+ <field name="name">Material (edit)</field>
+ <field name="value"
+ eval="'ir.actions.act_window,%d'%edit_material_2click" />
+ <field name="object" eval="True" />
+ </record>
+
+ <record model="ir.ui.view" id="view_software_type_form">
+ <field name="name">network.software.type.form</field>
+ <field name="model">network.software.type</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Software Type">
+ <field name="name" colspan="3" select="1"/>
+ <field name="note" colspan="3"/>
+ </form>
+ </field>
+ </record>
+ <record model="ir.actions.act_window" id="action_software_type">
+ <field name="name">network.software.type</field>
+ <field name="res_model">network.software.type</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+ <menuitem name="Network/Configuration" groups="admin" />
+ <menuitem name="Network/Configuration/Software/Types" id="menu_action_software_type" action="action_software_type"/>
+
+ <record model="ir.ui.view" id="view_hardware_type_form">
+ <field name="name">network.hardware.type.form</field>
+ <field name="model">network.hardware.type</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Hardware Type">
+ <field name="name"/>
+ <field name="networkable"/>
+ </form>
+ </field>
+ </record>
+ <record model="ir.actions.act_window" id="action_hard_type">
+ <field name="name">network.hardware.type</field>
+ <field name="res_model">network.hardware.type</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+ <menuitem name="Network/Configuration/Hardware/Types" id="menu_action_hard_type" action="action_hard_type" groups="admin"/>
+
+
+ <record model="ir.ui.view" id="password_form">
+ <field name="name">network.software.logpass.form</field>
+ <field name="model">network.software.logpass</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Add a password">
+ <field name="login" colspan="3"/>
+ <field name="password" colspan="3"/>
+ </form>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="password_tree">
+ <field name="name">network.software.logpass.tree</field>
+ <field name="model">network.software.logpass</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Passwords">
+ <field name="login"/>
+ <field name="password"/>
+ </tree>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="software_form">
+ <field name="name">network.software.form</field>
+ <field name="model">network.software</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Network Softwares">
+ <separator string="General Informations" colspan="4"/>
+ <field name="name" colspan="3" select="1"/>
+ <field name="type"/>
+ <field name="date" select="1"/>
+ <field name="email" select="1"/>
+ <separator string="Login / Password" colspan="4" />
+ <field name="logpass" colspan="4" nolabel="1"/>
+ <separator string="Notes" colspan="4"/>
+ <field name="note" colspan="4" nolabel="1"/>
+ </form>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="view_software_tree">
+ <field name="name">network.software.tree</field>
+ <field name="model">network.software</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Network Softwares">
+ <field name="name"/>
+ <field name="type"/>
+ <field name="email"/>
+ <field name="date"/>
+ </tree>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="view_network">
+ <field name="name">network.network.tree</field>
+ <field name="model">network.network</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="All Networks">
+ <field name="name" />
+ <field name="user_id" />
+ <field name="contact_id" />
+ </tree>
+ </field>
+ </record>
+ <record model="ir.actions.act_window" id="add_view_network">
+ <field name="name">network.network.tree</field>
+ <field name="res_model">network.network</field>
+ <field name="view_type">tree</field>
+ </record>
+ <menuitem name="Network/Network list"
+ id="menu_add_view_network" action="add_view_network" groups="admin"/>
+
+ <record model="ir.ui.view" id="add_network_view">
+ <field name="name">network.network.form</field>
+ <field name="model">network.network</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Network Element">
+ <separator string="Network Definition" colspan="4"/>
+ <field name="name" colspan="3" select="1"/>
+ <field name="range" colspan="3" select="1"/>
+ <field name="user_id" colspan="3" select="1"/>
+ <field name="contact_id" colspan="3" select="1"/>
+ <field name="material_ids" nolabel="1" colspan="4" widget="one2many_list">
+ <form string="Network Material">
+ <notebook>
+ <page string="Material Info">
+ <separator string="Informations" colspan="4"/>
+ <field name="name" colspan="3" select="1"/>
+ <field name="type" select="1"/>
+ <field name="supplier" select="1" />
+ <field name="date" select="1"/>
+ <field name="warranty" />
+ <field name="parent_id"/>
+ <separator string="Softwares" colspan="4"/>
+ <field name="software_id" nolabel="1" colspan="4" widget="one2many_list"/>
+ </page>
+ <page string="Updates">
+ <field name="change_id" nolabel="1" colspan="4" widget="one2many_list" />
+ </page>
+ <page string="Notes">
+ <field name="note" nolabel="1" colspan="4"/>
+ </page>
+ </notebook>
+ </form>
+ </field>
+ </form>
+ </field>
+ </record>
+ <record model="ir.actions.act_window" id="add_new_network">
+ <field name="name">network.network.form</field>
+ <field name="res_model">network.network</field>
+ <field name="view_type">form</field>
+ </record>
+ <menuitem name="Network/Networks" id="menu_add_new_network" action="add_new_network" groups="admin"/>
+
+ <record model="ir.ui.view" id="add_diary_entry_form">
+ <field name="name">network.changes.form</field>
+ <field name="model">network.changes</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Enter a diary entry">
+ <separator string="Diary entry" colspan="4" />
+ <field name="name" colspan="3" select="1" />
+ <field name="date" colspan="3" select="1"/>
+ <field name="description" colspan="3" />
+ </form>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="add_diary_entry_tree">
+ <field name="name">network.changes.tree</field>
+ <field name="model">network.changes</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Interventions">
+ <field name="date"/>
+ <field name="name"/>
+ </tree>
+ </field>
+ </record>
+ </data>
+</terp>
diff --git a/addons/network/report/material.xml b/addons/network/report/material.xml
new file mode 100644
index 00000000000..7ca21198ed7
--- /dev/null
+++ b/addons/network/report/material.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<materials>
+ <material type="fields" name="id">
+ <material-name type="field" name="name"/>
+ <material-date type="field" name="date"/>
+ <material-type type="field" name="type.name"/>
+ <material-note type="field" name="note"/>
+ <softwares>
+ <software type="zoom" name="software_id">
+ <soft-name type="field" name="name"/>
+ <soft-type type="field" name="type.name"/>
+ <soft-date type="field" name="date"/>
+ <soft-version type="field" name="version" />
+ <acces type="zoom" name="logpass">
+ <username type="field" name="login" />
+ <password type="field" name="password" />
+ </acces>
+ </software>
+ </softwares>
+ </material>
+</materials>
diff --git a/addons/network/report/material.xsl b/addons/network/report/material.xsl
new file mode 100644
index 00000000000..ad8cfa5d4e1
--- /dev/null
+++ b/addons/network/report/material.xsl
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+ <xsl:import href="../../custom/corporate_defaults.xsl"/>
+ <xsl:import href="../../base/report/rml_template.xsl"/>
+ <xsl:variable name="page_format">a4_normal</xsl:variable>
+
+ <xsl:template name="stylesheet">
+ <blockTableStyle id="products">
+ <blockFont name="Helvetica-BoldOblique" size="12"
+ start="0,0" stop="-1,0"/>
+ <blockBackground colorName="yellow" start="0,0" stop="-1,0"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ <blockTableStyle id="logpass">
+ <blockFont name="Helvetica" size="8" start="0,0" stop="-1,-1" />
+ <blockBackground colorName="grey" start="0,0" stop="-1,-1" />
+ </blockTableStyle>
+ </xsl:template>
+
+ <xsl:template name="story">
+ <xsl:apply-templates select="materials"/>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <xsl:call-template name="rml"/>
+ </xsl:template>
+
+ <xsl:template match="materials">
+ <xsl:apply-templates select="material"/>
+ </xsl:template>
+
+ <xsl:template match="material">
+ <setNextTemplate name="other_pages"/>
+ <para>
+ <b t="1">Name</b>:
+ <i><xsl:value-of select="material-name"/></i>
+ </para>
+ <para>
+ <b t="1">Date</b>:
+ <i><xsl:value-of select="material-date"/></i>
+ </para>
+ <para>
+ <b t="1">Type</b>:
+ <i><xsl:value-of select="material-type"/></i>
+ </para>
+ <para>
+ <b t="1">Your Contact</b>:
+ <i><xsl:value-of select="material-user"/></i>
+ </para>
+ <para>
+ <b t="1">Notes</b>:
+ </para>
+ <para>
+ <i><xsl:value-of select="material-note"/></i>
+ </para>
+ <spacer length="1cm" width="2mm"/>
+ <blockTable colWidths="6cm,3cm,2.5cm,2.5cm" style="products">
+ <tr>
+ <td t="1">Software</td>
+ <td t="1">Type</td>
+ <td t="1">Date</td>
+ <td t="1">Version</td>
+ </tr>
+ <xsl:apply-templates name="softwares"/>
+ </blockTable>
+ <setNextTemplate name="first_page"/>
+ <pageBreak/>
+ </xsl:template>
+
+ <xsl:template match="software">
+ <tr>
+ <td>
+ <xsl:value-of select="soft-name"/>
+ </td>
+ <td>
+ <xsl:value-of select="soft-type"/>
+ </td>
+ <td>
+ <xsl:value-of select="soft-date"/>
+ </td>
+ <td>
+ <xsl:value-of select="soft-version"/>
+ </td>
+ </tr>
+ <xsl:if test="acces">
+ <tr>
+ <td></td>
+ <td t="1">Login / Password</td>
+ <td>
+ <blockTable colWidths="2.5cm,2.5cm" style="logpass">
+ <xsl:for-each select="acces">
+ <tr>
+ <td><xsl:value-of select="username" /></td>
+ <td><xsl:value-of select="password" /></td>
+ </tr>
+ </xsl:for-each>
+ </blockTable>
+ </td>
+ </tr>
+ <tr></tr>
+ </xsl:if>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/addons/network/report/network.xml b/addons/network/report/network.xml
new file mode 100644
index 00000000000..063cc0b0c39
--- /dev/null
+++ b/addons/network/report/network.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<networks>
+ <network type="fields" name="id">
+ <network-name type="field" name="name" />
+ <network-range type="field" name="range" />
+ <partner type="zoom" name="contact_id">
+ <name type="field" name="name" />
+ <title type="field" name="title" />
+ <address type="zoom" name="address">
+ <name type="field" name="name" />
+ <street type="field" name="street" />
+ <postcode type="field" name="zip" />
+ <city type="field" name="city" />
+ <country type="field" name="country_id.name" />
+ </address>
+ </partner>
+ <materials>
+ <material type="zoom" name="material_ids">
+ <material-name type="field" name="name"/>
+ <material-date type="field" name="date"/>
+ <material-type type="field" name="type.name"/>
+ <material-note type="field" name="note"/>
+ <material-supplier type="field" name="supplier" />
+ <material-warranty type="field" name="warranty" />
+ <softwares>
+ <software type="zoom" name="software_id">
+ <soft-name type="field" name="name"/>
+ <soft-type type="field" name="type.name"/>
+ <soft-date type="field" name="date"/>
+ <soft-version type="field" name="version" />
+ <acces type="zoom" name="logpass">
+ <username type="field" name="login" />
+ <password type="field" name="password" />
+ </acces>
+ </software>
+ </softwares>
+ </material>
+ </materials>
+ </network>
+</networks>
+
diff --git a/addons/network/report/network.xsl b/addons/network/report/network.xsl
new file mode 100644
index 00000000000..b8fc4aa0852
--- /dev/null
+++ b/addons/network/report/network.xsl
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+ <xsl:import href="../../custom/corporate_defaults.xsl"/>
+ <xsl:import href="../../base/report/rml_template.xsl"/>
+ <xsl:variable name="page_format">a4_letter</xsl:variable>
+
+ <xsl:template name="stylesheet">
+ <blockTableStyle id="products">
+ <blockFont name="Helvetica-BoldOblique" size="12"
+ start="0,0" stop="-1,0"/>
+ <blockBackground colorName="yellow" start="0,0" stop="-1,0"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ <blockTableStyle id="logpass">
+ <blockFont name="Helvetica" size="8" start="0,0" stop="-1,-1" />
+ <blockBackground colorName="grey" start="0,0" stop="-1,-1" />
+ </blockTableStyle>
+ </xsl:template>
+
+ <xsl:template name="story">
+ <xsl:apply-templates select="networks"/>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <xsl:call-template name="rml"/>
+ </xsl:template>
+
+ <xsl:template match="network">
+ <setNextTemplate name="other_pages"/>
+ <para>
+ <xsl:value-of select="partner/title" />
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="partner/name"/>
+ </para>
+ <para>
+ <xsl:value-of select="partner/address/name"/>
+ </para>
+ <para>
+ <xsl:value-of select="partner/address/street"/>
+ </para>
+ <para>
+ <xsl:value-of select="partner/address/postcode"/>
+ <xsl:value-of select="partner/address/city"/>
+ </para>
+ <para>
+ <xsl:value-of select="partner/address/country"/>
+ </para>
+ <nextFrame />
+ <para t="1">
+ Hello,
+ </para>
+ <para t="1">
+ Here is the list of the software and hardware parts we installed during our last intervention.
+ </para>
+ <spacer length="1cm" />
+ <xsl:apply-templates select="materials/material" />
+ </xsl:template>
+
+ <xsl:template match="materials">
+ <xsl:apply-templates select="material"/>
+ </xsl:template>
+
+ <xsl:template match="material">
+ <blockTable colWidths="16cm">
+ <tr>
+ <td>
+ <para>
+ <b t="1">Name</b>:
+ <i><xsl:value-of select="material-name"/></i>
+ </para>
+ <para>
+ <b t="1">Type</b>:
+ <i><xsl:value-of select="material-type"/></i>
+ </para>
+ <para>
+ <b t="1">Date</b>:
+ <i><xsl:value-of select="material-date"/></i>
+ </para>
+ <para>
+ <b t="1">Warranty date</b>:
+ <i><xsl:value-of select="material-warranty" /></i>
+ </para>
+ <para>
+ <b t="1">Your Contact</b>:
+ <i><xsl:value-of select="material-user"/></i>
+ </para>
+ </td>
+ </tr>
+ </blockTable>
+ <para>
+ <i><xsl:value-of select="material-note"/></i>
+ </para>
+ <spacer length="1cm" width="2mm"/>
+ <blockTable colWidths="6cm,3cm,2.5cm,2.5cm" style="products">
+ <tr>
+ <td t="1">Software</td>
+ <td t="1">Type</td>
+ <td t="1">Date</td>
+ <td t="1">Version</td>
+ </tr>
+ <xsl:apply-templates name="softwares/software"/>
+ </blockTable>
+ <pageBreak/>
+ </xsl:template>
+
+ <xsl:template match="software">
+ <tr>
+ <td>
+ <xsl:value-of select="soft-name"/>
+ </td>
+ <td>
+ <xsl:value-of select="soft-type"/>
+ </td>
+ <td>
+ <xsl:value-of select="soft-date"/>
+ </td>
+ <td>
+ <xsl:value-of select="soft-version"/>
+ </td>
+ </tr>
+ <xsl:if test="acces">
+ <tr>
+ <td></td>
+ <td t="1">Login / Password</td>
+ <td>
+ <blockTable colWidths="2.5cm,2.5cm" style="logpass">
+ <xsl:for-each select="acces">
+ <tr>
+ <td><xsl:value-of select="username" /></td>
+ <td><xsl:value-of select="password" /></td>
+ </tr>
+ </xsl:for-each>
+ </blockTable>
+ </td>
+ </tr>
+ <tr></tr>
+ </xsl:if>
+ </xsl:template>
+</xsl:stylesheet>
+
diff --git a/addons/network/report/network_list.xml b/addons/network/report/network_list.xml
new file mode 100644
index 00000000000..6df2e216fff
--- /dev/null
+++ b/addons/network/report/network_list.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<networks>
+ <network type="fields" name="id">
+ <network-name type="field" name="name" />
+ <network-range type="field" name="range" />
+ <partner type="zoom" name="contact_id">
+ <name type="field" name="name" />
+ <address type="zoom" name="address">
+ <name type="field" name="name" />
+ <street type="field" name="street" />
+ <postcode type="field" name="zip" />
+ <city type="field" name="city" />
+ <country type="field" name="country_id.name" />
+ </address>
+ </partner>
+ <onsite type="zoom" name="user_id">
+ <name type="field" name="name" />
+ </onsite>
+ </network>
+</networks>
+
diff --git a/addons/network/report/network_list.xsl b/addons/network/report/network_list.xsl
new file mode 100644
index 00000000000..406909d93b5
--- /dev/null
+++ b/addons/network/report/network_list.xsl
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format">
+
+ <xsl:import href="../../custom/corporate_defaults.xsl"/>
+ <xsl:import href="../../base/report/rml_template.xsl"/>
+ <xsl:variable name="page_format">a4_normal</xsl:variable>
+
+ <xsl:template name="stylesheet">
+ <blockTableStyle id="network_list">
+ <blockFont name="Helvetica-BoldOblique" size="12"
+ start="0,0" stop="-1,0"/>
+ <blockBackground colorName="yellow" start="0,0" stop="-1,0"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ </xsl:template>
+
+ <xsl:template name="first_page_frames">
+ <frame id="main" x1="1cm" y1="3.5cm" width="19.0cm" height="21.5cm" />
+ </xsl:template>
+
+ <xsl:template match="/">
+ <xsl:call-template name="rml"/>
+ </xsl:template>
+
+ <xsl:template name="story">
+ <blockTable colWidths="5cm,5cm,5cm" style="network_list">
+ <tr>
+ <td t="1">Partner</td>
+ <td t="1">Network name</td>
+ <td t="1">Onsite contact</td>
+ </tr>
+ <xsl:for-each select="/networks/network">
+ <tr>
+ <td>
+ <xsl:value-of select="partner/name" />
+ </td>
+ <td>
+ <xsl:value-of select="network-name" />
+ </td>
+ <td>
+ <xsl:value-of select="onsite/name" />
+ </td>
+ </tr>
+ </xsl:for-each>
+ </blockTable>
+ <xsl:apply-templates select="networks"/>
+ </xsl:template>
+
+</xsl:stylesheet>
+