bzr revid: ame@tinyerp.com-20081224121045-3ihit9y7g1o4mnd5
This commit is contained in:
ame (Tiny/Axelor) 2008-12-24 17:40:45 +05:30
commit d7eaa30ae4
28 changed files with 1300 additions and 289 deletions

View File

@ -18,11 +18,10 @@
<record id="process_node_analytic0" model="process.node">
<field name="menu_id" ref="account.account_analytic_def_account"/>
<field name="model_id" ref="account.model_account_analytic_account"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Analytic&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Analytic costs to reinvoice purchases, timesheets, ...&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_invoiceworkflow0"/>
<field name="subflow_id" ref="process_process_invoiceworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'open', 'pending', 'close')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
@ -60,7 +59,7 @@
</record>
<record id="process_node_bankstatement0" model="process.node">
<field name="menu_id" ref="account.menu_bank_statement_tree2"/>
<field name="menu_id" ref="account.menu_bank_statement_tree"/>
<field name="model_id" ref="account.model_account_bank_statement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Bank Statement&quot;&quot;&quot;" name="name"/>

View File

@ -16,7 +16,7 @@
-->
<record id="process_node_electronicfile0" model="process.node">
<field name="menu_id" ref="account.menu_bank_statement_tree2"/>
<field name="menu_id" ref="account.menu_bank_statement_tree"/>
<field name="model_id" ref="account.model_account_bank_statement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Electronic File&quot;&quot;&quot;" name="name"/>
@ -27,7 +27,7 @@
</record>
<record id="process_node_manually0" model="process.node">
<field name="menu_id" ref="account.menu_bank_statement_tree2"/>
<field name="menu_id" ref="account.menu_bank_statement_tree"/>
<field name="model_id" ref="account.model_account_bank_statement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Manually&quot;&quot;&quot;" name="name"/>
@ -38,7 +38,7 @@
</record>
<record id="process_node_importinvoice0" model="process.node">
<field name="menu_id" ref="account.menu_bank_statement_tree2"/>
<field name="menu_id" ref="account.menu_bank_statement_tree"/>
<field name="model_id" ref="account.model_account_bank_statement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Import invoice&quot;&quot;&quot;" name="name"/>
@ -49,7 +49,7 @@
</record>
<record id="process_node_draftstatement0" model="process.node">
<field name="menu_id" ref="account.menu_bank_statement_tree2"/>
<field name="menu_id" ref="account.menu_bank_statement_tree"/>
<field name="model_id" ref="account.model_account_bank_statement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Draft statement&quot;&quot;&quot;" name="name"/>
@ -65,6 +65,7 @@
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Accounting Statement&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Accounting entries at statement's confirmation&quot;&quot;&quot;" name="note"/>
<field name="subflow_id" ref="process_process_invoiceworkflow0"/>
<field name="process_id" ref="process_process_statementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'valid')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>

View File

@ -15,6 +15,17 @@
Process Node
-->
<record id="process_node_analyticcost0" model="process.node">
<field name="menu_id" ref="account.account_analytic_def_account"/>
<field name="model_id" ref="account.model_account_analytic_account"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Analytic&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Analytic costs to reinvoice purchases, timesheets, ...&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_supplierinvoiceworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'open', 'pending', 'close')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
<record id="process_node_supplierdraftinvoices0" model="process.node">
<field name="menu_id" ref="account.menu_invoice_draft"/>
<field name="model_id" ref="account.model_account_invoice"/>
@ -38,14 +49,14 @@
</record>
<record id="process_node_supplierbankstatement0" model="process.node">
<field name="menu_id" ref="account.menu_bank_statement_tree2"/>
<field name="menu_id" ref="account.menu_bank_statement_tree"/>
<field name="model_id" ref="account.model_account_bank_statement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Bank Statement&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Statement encoding produces payment entries&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_supplierinvoiceworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_supplieraccountingentries0" model="process.node">
@ -95,6 +106,15 @@
Process Transition
-->
<record id="process_transition_supplieranalyticcost0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Analytic Invoice&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;From analytic accounts, Create invoice.&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_supplierdraftinvoices0"/>
<field model="process.node" name="source_node_id" ref="process_node_analyticcost0"/>
</record>
<record id="process_transition_suppliercustomerinvoice0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>

View File

@ -42,7 +42,7 @@ def _zippy(archive, fromurl, path, src=True):
else:
exclude = ['py','pyo','pyc']
if (path.split('.')[-1] not in exclude) or (os.path.basename(path)=='__terp__.py'):
archive.write(os.path.join(fromurl, path).encode(), path.encode())
archive.write(os.path.join(fromurl, path).encode('utf8'), path.encode('utf8'))
return True
def createzip(cr, uid, moduleid, context, b64enc=True, src=True):
@ -60,7 +60,7 @@ def createzip(cr, uid, moduleid, context, b64enc=True, src=True):
if os.path.isdir(os.path.join(ad, name)):
archname = StringIO.StringIO('wb')
archive = PyZipFile(archname, "w", ZIP_DEFLATED)
archive.writepy(os.path.join(ad, name).encode())
archive.writepy(os.path.join(ad, name).encode('utf8'))
_zippy(archive, ad, name, src=src)
archive.close()
val =archname.getvalue()

View File

@ -52,7 +52,7 @@ finish_fields = {
class move_module_wizard(wizard.interface):
def createzip(self, cr, uid, data, context):
return module_zip.createzip(cr, uid, data['id'], context, src=data['form']['include_src'])
return module_zip.createzip(cr, uid, data['id'], context, src=data['form']['include_src'])
states = {
'init': {

View File

@ -36,11 +36,11 @@ class report_xml(osv.osv):
The use of this function is to get rml file from sxw file.
'''
sxwval = StringIO(base64.decodestring(file_sxw))
fp = tools.file_open('normalized_oo2rml.xsl',
subdir='addons/base_report_designer/wizard/tiny_sxw2rml')
fp = tools.file_open('normalized_odt2rml.xsl',
subdir='/home/dsh/my-work/bazaar/odt-sxw2ml')
return {'report_rml_content': str(sxw2rml(sxwval, xsl=fp.read()))}
def upload_report(self, cr, uid, report_id, file_sxw, context):
def upload_report(self, cr, uid, report_id, file_sxw,file_type, context):
'''
Untested function
'''
@ -48,9 +48,13 @@ class report_xml(osv.osv):
sxwval = StringIO(base64.decodestring(file_sxw))
fp = tools.file_open('normalized_oo2rml.xsl',
subdir='addons/base_report_designer/wizard/tiny_sxw2rml')
if file_type=='odt':
fp = tools.file_open('normalized_odt2rml.xsl',
subdir='/home/dsh/my-work/bazaar/odt-sxw2ml')
report = pool.get('ir.actions.report.xml').write(cr, uid, [report_id], {
'report_sxw_content': base64.decodestring(file_sxw),
'report_rml_content': str(sxw2rml(sxwval, xsl=fp.read()))
'report_rml_content': str(sxw2rml(sxwval, xsl=fp.read())),
'report_type' : file_type
})
cr.commit()
db = pooler.get_db_only(cr.dbname)
@ -59,6 +63,7 @@ class report_xml(osv.osv):
def report_get(self, cr, uid, report_id, context={}):
report = self.browse(cr, uid, report_id, context)
return {
'file_type' : report.report_type,
'report_sxw_content': report.report_sxw_content and base64.encodestring(report.report_sxw_content) or False,
'report_rml_content': report.report_rml_content and base64.encodestring(report.report_rml_content) or False
}

View File

@ -0,0 +1,681 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
xmlns:math="http://www.w3.org/1998/Math/MathML"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
office:class="text" office:version="1.1"
exclude-result-prefixes = "xsl fo office style text table draw xlink number svg chart dr3d math form script">
<!--TODO's: indent, picture cache (trml2pdf) -->
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:key name="text_style" match="style:style[@style:family='text']" use="@style:name" />
<xsl:key name="page_break_before" match="style:style[@style:family='paragraph' and ./style:properties/@fo:break-before='page']" use="@style:name" />
<xsl:key name="page_break_after" match="style:style[@style:family='paragraph' and ./style:properties/@fo:break-after='page']" use="@style:name" />
<xsl:key name="table_column_style" match="style:style[@style:family='table-column']" use="@style:name" />
<xsl:key name="table_cell_style" match="style:style[@style:family='table-cell']" use="@style:name" />
<xsl:key name="paragraph_style" match="style:style[@style:family='paragraph']" use="@style:name" />
<xsl:template match="office:document-content">
<document filename="test.pdf">
<xsl:apply-templates select="office:automatic-styles" />
<xsl:apply-templates select="office:body" />
</document>
</xsl:template>
<xsl:template name="page_size">
<xsl:attribute name="pageSize">
<xsl:text>(</xsl:text>
<xsl:value-of select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:page-width" />
<xsl:text>,</xsl:text>
<xsl:value-of select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:page-height" />
<xsl:text>)</xsl:text>
</xsl:attribute>
</xsl:template>
<xsl:template name="fixed_frame">
<xsl:for-each select="//draw:text-box">
<frame>
<xsl:attribute name="id"><xsl:value-of select="./@draw:name" /></xsl:attribute>
<xsl:attribute name="x1"><xsl:value-of select="./@svg:x" /></xsl:attribute>
<xsl:attribute name="y1">
<xsl:value-of
select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:page-height - ./@svg:y - ./@fo:min-height" />
</xsl:attribute>
<xsl:attribute name="width">
<xsl:value-of select="./@svg:width" />
</xsl:attribute>
<xsl:attribute name="height">
<xsl:value-of select="./@fo:min-height" />
</xsl:attribute>
</frame>
</xsl:for-each>
</xsl:template>
<xsl:template name="margin_sizes">
<xsl:variable name="margin_left" select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:margin-left" />
<xsl:variable name="margin_right" select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:margin-right" />
<xsl:variable name="margin_top" select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:margin-top" />
<xsl:variable name="margin_bottom" select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:margin-bottom" />
<xsl:variable name="page_width" select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:page-width" />
<xsl:variable name="page_height" select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:page-height" />
<xsl:attribute name="x1"><xsl:value-of select="$margin_left" /></xsl:attribute>
<xsl:attribute name="y1"><xsl:value-of select="$margin_bottom" /></xsl:attribute>
<xsl:attribute name="width"><xsl:value-of select="$page_width - $margin_left - $margin_right"/></xsl:attribute>
<xsl:attribute name="height"><xsl:value-of select="$page_height - $margin_bottom - $margin_top"/></xsl:attribute>
</xsl:template>
<xsl:template name="text_width">
<!-- You need this for the workaround to make primitive outlines-->
<xsl:variable name="margin_left" select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:margin-left" />
<xsl:variable name="margin_right" select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:margin-right" />
<xsl:variable name="page_width" select="//transferredfromstylesxml/style:page-layout[1]/style:page-layout-properties/@fo:page-width" />
<xsl:value-of select="$page_width - $margin_left - $margin_right - 18"/>
</xsl:template>
<xsl:template match="office:automatic-styles">
<!--<template pageSize="(21cm, 29.7cm)" leftMargin="1.0cm" rightMargin="2.0cm" topMargin="1.0cm" bottomMargin="1.0cm" title="Test" author="Martin Simon" allowSplitting="20">-->
<template pageSize="(21cm, 29.7cm)" title="Test" author="Martin Simon" allowSplitting="20">
<xsl:call-template name="page_size" />
<pageTemplate id="first">
<xsl:call-template name="fixed_frame" />
<frame id="first" x1="2cm" y1="2cm" width="17cm" height="26cm">
<xsl:call-template name="margin_sizes" />
</frame>
</pageTemplate>
</template>
<stylesheet>
<!--A table style to simulate primitive outlines -till the <addOutline> tag is implemented in trml2pdf -->
<blockTableStyle id="Standard_Outline">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<!--use two standard table grid styles like PyOpenOffice "Old Way": with and without a grid-->
<!--TODO insert table cell colors here, not within the <td> tag - otherwise
it will not work with flowables as cell content-->
<xsl:call-template name="make_blocktablestyle" />
<initialize>
<paraStyle name="all" alignment="justify" />
</initialize>
<xsl:apply-templates select="style:style" />
</stylesheet>
</xsl:template>
<xsl:template name="make_blocktablestyle">
<xsl:for-each select="//table:table">
<xsl:variable name="test">
<xsl:value-of select="./@table:name" />
</xsl:variable>
<xsl:if test="not(boolean(count(preceding-sibling::table:table[@table:name=$test])))">
<!--Test if this is the first table with this style, nested tables not counted-->
<blockTableStyle id="{@table:name}">
<xsl:if test=".//draw:image">
<blockTopPadding value="0"/>
<blockBottomPadding value="0"/>
</xsl:if>
<blockAlignment value="LEFT" />
<blockValign value="TOP" />
<xsl:call-template name="make_linestyle" />
<xsl:call-template name="make_tablebackground" />
</blockTableStyle>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="make_linestyle">
<xsl:for-each select=".//table:table-row">
<xsl:variable name="row" select="position() - 1"/>
<xsl:for-each select=".//table:table-cell">
<xsl:variable name="col" select="position() - 1"/>
<xsl:variable name="linebefore">
<xsl:value-of select="key('table_cell_style',@table:style-name)/style:properties/@fo:border-left"/>
</xsl:variable>
<xsl:if test="not($linebefore='') and not($linebefore='none')">
<xsl:variable name="colorname">
<xsl:value-of select="substring-after($linebefore,'#')"/>
</xsl:variable>
<lineStyle kind="LINEBEFORE" colorName="#{$colorname}" start="{$col},{$row}" stop="{$col},-1"/>
</xsl:if>
<xsl:variable name="lineafter">
<xsl:value-of select="key('table_cell_style',@table:style-name)/style:properties/@fo:border-right"/>
</xsl:variable>
<xsl:if test="not($lineafter='') and not($lineafter='none')">
<xsl:variable name="colorname">
<xsl:value-of select="substring-after($lineafter,'#')"/>
</xsl:variable>
<lineStyle kind="LINEAFTER" colorName="#{$colorname}" start="{$col},{$row}" stop="{$col},-1"/>
</xsl:if>
<xsl:variable name="lineabove">
<xsl:value-of select="key('table_cell_style',@table:style-name)/style:properties/@fo:border-top"/>
</xsl:variable>
<xsl:if test="not($lineabove='') and not($lineabove='none')">
<xsl:variable name="colorname">
<xsl:value-of select="substring-after($lineabove,'#')"/>
</xsl:variable>
<lineStyle kind="LINEABOVE" colorName="#{$colorname}" start="{$col},{$row}" stop="{$col},{$row}"/>
</xsl:if>
<xsl:variable name="linebelow">
<xsl:value-of select="key('table_cell_style',@table:style-name)/style:properties/@fo:border-bottom"/>
</xsl:variable>
<xsl:if test="not($linebelow='') and not($linebelow='none')">
<xsl:variable name="colorname">
<xsl:value-of select="substring-after($linebelow,'#')"/>
</xsl:variable>
<lineStyle kind="LINEBELOW" colorName="#{$colorname}" start="{$col},{-1}" stop="{$col},{-1}"/>
</xsl:if>
<xsl:variable name="grid">
<xsl:value-of select="key('table_cell_style',@table:style-name)/style:properties/@fo:border"/>
</xsl:variable>
<xsl:if test="not($grid='') and not($grid='none')">
<xsl:variable name="colorname">
<xsl:value-of select="substring-after($grid,'#')"/>
</xsl:variable>
<!-- Don't use grid because we don't need a line between each rows -->
<lineStyle kind="LINEBEFORE" colorName="#{$colorname}" start="{$col},{$row}" stop="{$col},-1"/>
<lineStyle kind="LINEAFTER" colorName="#{$colorname}" start="{$col},{$row}" stop="{$col},-1"/>
<lineStyle kind="LINEABOVE" colorName="#{$colorname}" start="{$col},{$row}" stop="{$col},{$row}"/>
<lineStyle kind="LINEBELOW" colorName="#{$colorname}" start="{$col},{-1}" stop="{$col},{-1}"/>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<!-- Was needed to simulate bulleted lists:
<xsl:template match="text:ordered-list|text:unordered-list">
<xsl:variable name = "text_width">
<xsl:call-template name="text_width" />
</xsl:variable>
<blockTable style="Standard_Outline" colWidths="18,{$text_width}">
<xsl:apply-templates match="text:list-item" />
</blockTable>
</xsl:template>
<xsl:template match="text:list-item">
<tr>
<td><para><font face="Helvetica-Bold" size="10">*</font></para></td>
<td>
<xsl:apply-templates />
</td>
</tr>
</xsl:template>
-->
<xsl:template match="office:body">
<story>
<xsl:apply-templates />
<xsl:for-each select="//draw:text-box">
<currentFrame>
<xsl:attribute name="name">
<xsl:value-of select="./@draw:name" />
</xsl:attribute>
</currentFrame>
<xsl:apply-templates>
<xsl:with-param name="skip_draw" select="0" />
</xsl:apply-templates>
<frameEnd />
</xsl:for-each>
</story>
</xsl:template>
<xsl:template match="table:table">
<blockTable>
<xsl:attribute name="colWidths">
<xsl:call-template name="make_columns" />
</xsl:attribute>
<xsl:call-template name="make_tableheaders" />
<xsl:attribute name="style">
<xsl:value-of select="@table:name" />
</xsl:attribute>
<xsl:apply-templates />
</blockTable>
</xsl:template>
<xsl:template name="make_tableheaders">
<xsl:if test="boolean(count(table:table-header-rows))">
<xsl:attribute name="repeatRows">1</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="make_tablebackground">
<xsl:for-each select=".//table:table-row">
<!--Be careful when there are table:table-header-rows as
parent node of table:table-row -->
<xsl:variable name="row" select="position() - 1" />
<xsl:for-each select="./table:table-cell">
<xsl:variable name="col" select="position() - 1" />
<xsl:variable name="background">
<xsl:value-of select="key('table_cell_style',@table:style-name)/style:properties/@fo:background-color" />
</xsl:variable>
<xsl:if test="not($background='') and boolean(key('table_cell_style',@table:style-name)/style:properties/@fo:background-color) and starts-with($background,'#')">
<!--only RGB hexcolors are accepted -->
<blockBackground colorName="{$background}" start="{$col},{$row}" stop="{$col},-1" />
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template name="make_columns">
<xsl:variable name="columns" >
<xsl:for-each select="table:table-column">
<xsl:value-of select="key('table_column_style',@table:style-name)/style:properties/@style:column-width" />
<xsl:text>,</xsl:text>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="substring($columns,1,string-length($columns) - 1)" />
<!--strip the last comma-->
</xsl:template>
<xsl:template match="table:table-row">
<tr>
<xsl:apply-templates />
</tr>
</xsl:template>
<xsl:template match="table:table-cell">
<td>
<xsl:apply-templates />
</td>
</xsl:template>
<xsl:template match="text:section">
<section>
<xsl:apply-templates />
</section>
</xsl:template>
<xsl:template match="text:span">
<font>
<xsl:call-template name="make_fontnames_span" />
<xsl:call-template name="make_fontsize_span" />
<xsl:apply-templates />
</font>
</xsl:template>
<xsl:template name="make_fontsize_span">
<xsl:variable name ="fontsize">
<xsl:value-of select="key('text_style',@text:style-name)/style:properties/@fo:font-size" />
</xsl:variable>
<xsl:if test="not($fontsize='') and boolean(key('text_style',@text:style-name)/style:properties/@fo:font-size)" >
<xsl:attribute name="size">
<xsl:value-of select="$fontsize" />
</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="make_fontnames_span">
<xsl:attribute name="face">
<xsl:call-template name="make_fontnames">
<xsl:with-param name="fontName" select="key('text_style',@text:style-name)/style:properties/@style:font-name" />
<xsl:with-param name="fontWeight" select="key('text_style',@text:style-name)/style:properties/@fo:font-weight" />
<xsl:with-param name="fontStyle" select="key('text_style',@text:style-name)/style:properties/@fo:font-style" />
</xsl:call-template>
</xsl:attribute>
</xsl:template>
<xsl:template name="make_image">
<illustration height="{.//draw:frame/@svg:height}" width="{.//draw:frame/@svg:width}">
<image x="0" y="0" file="{substring-after(.//draw:image/@xlink:href,'Pictures/')}" height="{.//draw:frame/@svg:height}" width="{.//draw:frame/@svg:width}" />
</illustration>
</xsl:template>
<xsl:template name="empty_paragraph">
<xsl:if test="not(boolean(count(descendant::node())))">
<xsl:call-template name="distance_point">
<xsl:with-param name="background" select="key('paragraph_style',@text:style-name)/style:properties/@fo:background-color" />
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="distance_point">
<xsl:param name="background" />
<xsl:param name="tab_stop"></xsl:param>
<xsl:variable name="local_back">
<xsl:choose>
<xsl:when test="not(boolean($background)) or not(contains($background,'#'))">
<!-- Do not accept OO colors like "transparent", only hex-colors -->
<xsl:text>white</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$background" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<font color="{$local_back}">
<xsl:text> </xsl:text>
<xsl:if test="boolean($tab_stop)">
<!-- simulate a tabstop with white/background-color points -->
<xsl:text>.........</xsl:text>
</xsl:if>
</font>
</xsl:template>
<xsl:template match="text:ordered-list">
<xsl:apply-templates />
<para><seqreset id="ordered_list" /></para>
<!-- Reset the counter. seqreset is not a trml2pdf tag, but a Platypus Intra Paragraph Markup,
so it needs a dummy paragraph to enclose it -->
</xsl:template>
<xsl:template name="make_listitem">
<xsl:if test="(name(..)='text:list-item')">
<xsl:attribute name="leftIndent">15</xsl:attribute>
<xsl:attribute name="bulletIndent">0</xsl:attribute>
<xsl:choose>
<xsl:when test="(name(../..)='text:unordered-list')">
<xsl:variable name="fontsize">
<xsl:value-of select="number(key('paragraph_style',@text:style-name)/style:properties/@fo:font-size)" />
</xsl:variable>
<xsl:choose>
<xsl:when test="$fontsize='NaN'">
<!-- you should exclude non-numerical values for bulletFontSize. <== Sometimes the preprocessing went wrong.-->
<!--use a default bullet font size-->
<xsl:attribute name="bulletFontSize">6</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="bulletFontSize"><xsl:value-of select="floor(($fontsize div 2) + 1)" /></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:attribute name="bulletFontName">ZapfDingbats</xsl:attribute>
<xsl:attribute name="bulletText">l</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<!-- Generate the numbers for an ordered list -->
<xsl:variable name="size">
<xsl:value-of select="key('paragraph_style',@text:style-name)/style:properties/@fo:font-size" />
</xsl:variable>
<!-- For ordered lists we use the bullet tag from Platypus Intra Paragraph Markup -->
<bullet>
<xsl:if test="not($size='') and boolean(key('paragraph_style',@text:style-name)/style:properties/@fo:font-size)">
<xsl:attribute name="size">
<!-- adapt the fontsize to the fontsize of the current paragraph -->
<xsl:value-of select="$size" />
</xsl:attribute>
</xsl:if>
<seq id="ordered_list" />.</bullet>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
<xsl:template match="text:drop-down">
<xsl:value-of select="text:label[2]/@text:value" />
</xsl:template>
<xsl:template match="text:p|text:h">
<xsl:param name="skip_draw" select="1" />
<xsl:if test="boolean(key('page_break_before',@text:style-name))" >
<pageBreak />
</xsl:if>
<xsl:choose>
<xsl:when test="boolean(.//draw:image)">
<xsl:call-template name="make_image" />
</xsl:when>
<xsl:when test="boolean(name(..) = 'draw:text-box') and boolean($skip_draw)">
</xsl:when>
<xsl:otherwise>
<para>
<xsl:attribute name="style">
<xsl:value-of select="@text:style-name" />
</xsl:attribute>
<xsl:call-template name="make_listitem" />
<xsl:apply-templates />
<xsl:call-template name="empty_paragraph" />
</para>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="boolean(key('page_break_after',@text:style-name))" >
<pageBreak />
</xsl:if>
</xsl:template>
<xsl:template match="text:p/text:tab-stop">
<!-- simulate a tabstop -->
<xsl:call-template name="distance_point">
<xsl:with-param name="background" select="key('paragraph_style',@text:style-name)/style:properties/@fo:background-color" />
<xsl:with-param name="tab_stop">yes</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- experimental - switched off
<xsl:template match="text:h">
<para>
<xsl:attribute name="style">
<xsl:value-of select="@text:style-name" />
</xsl:attribute>
<xsl:call-template name="make_number" />
<xsl:apply-templates />
<xsl:call-template name="empty_paragraph" />
</para>
</xsl:template>
<xsl:template name="make_number">
<xsl:choose>
<xsl:when test="@text:level='1'">
<xsl:number format="1. " />
</xsl:when>
<xsl:when test="@text:level='2'">
<xsl:number count="text:h[@text:level='1']|text:h[text:level='2']" level="any" format="1.1." />
</xsl:when>
</xsl:choose>
</xsl:template>
-->
<xsl:template match="style:style[@style:family='paragraph']">
<paraStyle>
<xsl:attribute name="name">
<xsl:value-of select="@style:name" />
</xsl:attribute>
<xsl:call-template name="make_indent_paragraph" />
<xsl:call-template name="make_fontnames_paragraph" />
<xsl:call-template name="make_fontsize" />
<!--<xsl:call-template name="make_parent" /> not necessary -
parent styles processed by PyOpenOffice -->
<xsl:call-template name="make_alignment" />
<xsl:call-template name="make_background" />
<xsl:call-template name="make_space_beforeafter" />
</paraStyle>
</xsl:template>
<xsl:template name="make_indent_paragraph">
<xsl:variable name="right_indent"><xsl:value-of select="style:properties/@fo:margin-right" /></xsl:variable>
<xsl:variable name="left_indent"><xsl:value-of select="style:properties/@fo:margin-left" /></xsl:variable>
<xsl:if test="not($right_indent='') and boolean(style:properties/@fo:margin-right)">
<xsl:attribute name="rightIndent">
<xsl:value-of select="$right_indent" />
</xsl:attribute>
</xsl:if>
<xsl:if test="not($left_indent='') and boolean(style:properties/@fo:margin-left)">
<xsl:attribute name="leftIndent">
<xsl:value-of select="$left_indent" />
</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="make_background">
<xsl:variable name="background">
<xsl:value-of select="style:properties/@fo:background-color" />
</xsl:variable>
<xsl:if test="not($background='') and boolean(style:properties/@fo:background-color) and starts-with($background,'#')" >
<xsl:attribute name="backColor">
<xsl:value-of select="$background" />
</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="make_space_beforeafter">
<xsl:variable name="before">
<xsl:value-of select="style:properties/@fo:margin-top" />
</xsl:variable>
<xsl:variable name="after">
<xsl:value-of select="style:properties/@fo:margin-bottom" />
</xsl:variable>
<xsl:if test="not($before='') and boolean(style:properties/@fo:margin-top)" >
<xsl:attribute name="spaceBefore">
<xsl:value-of select="$before" />
</xsl:attribute>
</xsl:if>
<xsl:if test="not($after='') and boolean(style:properties/@fo:margin-bottom)" >
<xsl:attribute name="spaceAfter">
<xsl:value-of select="$after" />
</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="make_fontsize">
<xsl:variable name="fontSize">
<xsl:value-of select="style:properties/@fo:font-size" />
</xsl:variable>
<xsl:if test="not($fontSize='') and boolean(style:properties/@fo:font-size)">
<xsl:attribute name="fontSize">
<xsl:value-of select="$fontSize" />
</xsl:attribute>
<xsl:attribute name="leading">
<xsl:value-of select="$fontSize + floor($fontSize div 5) + 1" />
<!--use a standard leading related to the font size -->
</xsl:attribute>
</xsl:if>
</xsl:template>
<!--this template is not needed anymore for "normalized" sxw files -->
<xsl:template name="make_parent">
<xsl:variable name="parent">
<xsl:value-of select="@style:parent-style-name" />
</xsl:variable>
<xsl:if test="not($parent='') and boolean(@style:parent-style-name)">
<xsl:attribute name="parent">
<xsl:value-of select="$parent" />
</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="make_alignment">
<xsl:variable name="alignment">
<xsl:value-of select="style:properties/@fo:text-align" />
</xsl:variable>
<xsl:if test="not($alignment='') and boolean(style:properties/@fo:text-align)">
<xsl:choose>
<xsl:when test="$alignment='start'">
<xsl:attribute name="alignment">LEFT</xsl:attribute>
</xsl:when>
<xsl:when test="$alignment='center'">
<xsl:attribute name="alignment">CENTER</xsl:attribute>
</xsl:when>
<xsl:when test="$alignment='end'">
<xsl:attribute name="alignment">RIGHT</xsl:attribute>
</xsl:when>
<xsl:when test="$alignment='justify'">
<xsl:attribute name="alignment">JUSTIFY</xsl:attribute>
</xsl:when>
</xsl:choose>
</xsl:if>
</xsl:template>
<xsl:template name="make_fontnames_paragraph">
<xsl:attribute name="fontName">
<xsl:call-template name="make_fontnames">
<xsl:with-param name="fontName" select="style:properties/@style:font-name" />
<xsl:with-param name="fontWeight" select="style:properties/@fo:font-weight" />
<xsl:with-param name="fontStyle" select="style:properties/@fo:font-style" />
</xsl:call-template>
</xsl:attribute>
</xsl:template>
<xsl:template name="make_fontnames">
<!--much too verbose, needs improvement-->
<xsl:param name="fontName" />
<xsl:param name="fontWeight" />
<xsl:param name="fontStyle" />
<xsl:choose>
<xsl:when test="not($fontName='') and boolean($fontName)">
<xsl:choose>
<xsl:when test="contains($fontName,'Courier')">
<xsl:choose>
<xsl:when test="($fontWeight='bold') and ($fontStyle='italic')">
<xsl:text>Courier-BoldOblique</xsl:text>
</xsl:when>
<xsl:when test="($fontWeight='bold') and not ($fontStyle='italic')">
<xsl:text>Courier-Bold</xsl:text>
</xsl:when>
<xsl:when test="not($fontWeight='bold') and ($fontStyle='italic')">
<xsl:text>Courier-Oblique</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Courier</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="contains($fontName,'Helvetica') or contains($fontName,'Arial') or contains($fontName,'Sans')">
<xsl:choose>
<xsl:when test="($fontWeight='bold') and ($fontStyle='italic')">
<xsl:text>Helvetica-BoldOblique</xsl:text>
</xsl:when>
<xsl:when test="($fontWeight='bold') and not ($fontStyle='italic')">
<xsl:text>Helvetica-Bold</xsl:text>
</xsl:when>
<xsl:when test="not($fontWeight='bold') and ($fontStyle='italic')">
<xsl:text>Helvetica-Oblique</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Helvetica</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="($fontWeight='bold') and ($fontStyle='italic')">
<xsl:text>Times-BoldItalic</xsl:text>
</xsl:when>
<xsl:when test="($fontWeight='bold') and not ($fontStyle='italic')">
<xsl:text>Times-Bold</xsl:text>
</xsl:when>
<xsl:when test="not($fontWeight='bold') and ($fontStyle='italic')">
<xsl:text>Times-Italic</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Times-Roman</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<!--Use this as default -->
<xsl:text>Times-Roman</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!--
This stylesheet is part of:
PyOpenOffice Version 0.4
Copyright (C) 2005: Martin Simon
Homepage: www.bezirksreiter.de
GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999
-->
</xsl:stylesheet>

View File

@ -151,6 +151,8 @@ class DomApi(DomApiGeneral):
self.buildStylePropertiesDict()
if self.styles_dom.getElementsByTagName("style:page-master").__len__()<>0:
self.page_master = self.styles_dom.getElementsByTagName("style:page-master")[0]
if self.styles_dom.getElementsByTagName("style:page-layout").__len__()<>0 :
self.page_master = self.styles_dom.getElementsByTagName("style:page-layout")[0]
self.document = self.content_dom.getElementsByTagName("office:document-content")[0]
def buildStylePropertiesDict(self):
@ -265,7 +267,7 @@ class DomApi(DomApiGeneral):
childs = self.style_dict[style_name].childNodes
for c in childs:
if c.nodeType == c.ELEMENT_NODE and c.nodeName == "style:properties":
if c.nodeType == c.ELEMENT_NODE and c.nodeName.find("properties")>0 :
for attr in c._attrs.keys():
res[attr] = c.getAttribute(attr).encode("latin-1")
return res
@ -357,8 +359,12 @@ if __name__ == "__main__":
fname = sys.argv[1]
f = StringIO.StringIO(file(fname).read())
xsl = file(os.path.join(os.getcwd(), os.path.dirname(sys.argv[0]), 'normalized_oo2rml.xsl')).read()
xsl_file = 'normalized_oo2rml.xsl'
z = zipfile.ZipFile(fname,"r")
mimetype = z.read('mimetype')
if mimetype.split('/')[-1] == 'vnd.oasis.opendocument.text' :
xsl_file = 'normalized_odt2rml.xsl'
xsl = file(os.path.join(os.getcwd(), os.path.dirname(sys.argv[0]), xsl_file)).read()
result = sxw2rml(f, xsl, output=opt.output, save_pict=False)
print result

View File

@ -22,7 +22,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="crm_configuration.crm_case_tree_view_leads"/>
<field name="domain">[('section_id', '=', 'Leads'),('user_id','=',uid),('state','!=','pending'),('state','!=','cancel')]</field>
<field name="domain">[('section_id.name', '=', 'Leads'),('user_id','=',uid),('state','!=','pending'),('state','!=','cancel')]</field>
</record>
<record model="ir.actions.act_window" id="act_my_meetings">
@ -30,7 +30,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="crm_configuration.crm_case_tree_view_meet"/>
<field name="domain">[('section_id', '=', 'Meetings'),('user_id','=',uid),('state','!=','pending'),('state','!=','cancel')]</field>
<field name="domain">[('section_id.name', '=', 'Meetings'),('user_id','=',uid),('state','!=','pending'),('state','!=','cancel')]</field>
</record>
<act_window name="My Cases"
@ -45,7 +45,7 @@
<field name="view_type">form</field>
<field name="view_mode">graph,tree,form</field>
<field name="view_id" ref="view_crm_lead_stage_graph1"/>
<field name="domain">[('section_id', '=', 'Leads'),('user_id','=',uid),('state','!=','pending'),('state','!=','cancel')]</field>
<field name="domain">[('section_id.name', '=', 'Leads'),('user_id','=',uid),('state','!=','pending'),('state','!=','cancel')]</field>
</record>
<record model="ir.actions.act_window" id="act_sales_pipeline">
@ -53,7 +53,7 @@
<field name="view_type">form</field>
<field name="view_mode">graph,tree,form</field>
<field name="view_id" ref="view_crm_case_user_graph1"/>
<field name="domain">[('section_id', '=', 'Opportunities'),('user_id','=',uid),('state','!=','pending'),('state','!=','cancel')]</field>
<field name="domain">[('section_id.name', '=', 'Opportunities'),('user_id','=',uid),('state','!=','pending'),('state','!=','cancel')]</field>
</record>
<record model="ir.actions.act_window" id="act_jobs_requests">
@ -61,7 +61,7 @@
<field name="view_type">form</field>
<field name="view_mode">graph,tree,form</field>
<field name="view_id" ref="view_crm_case_user_graph1"/>
<field name="domain">[('section_id','=','Jobs'),('user_id','=',uid),('state','!=','pending'),('state','!=','cancel')]</field>
<field name="domain">[('section_id.name','=','Jobs'),('user_id','=',uid),('state','!=','pending'),('state','!=','cancel')]</field>
</record>
<record model="ir.ui.view" id="board_crm_form">

View File

@ -181,6 +181,7 @@ class crm_case_section(osv.osv):
'object': True
})
return True
def name_get(self, cr, uid, ids, context={}):
if not len(ids):
return []

View File

@ -0,0 +1,248 @@
<?xml version="1.0" encoding="UTF-8"?>
<office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" office:version="1.1">
<office:font-face-decls>
<style:font-face style:name="Helvetica" svg:font-family="Helvetica"/>
<style:font-face style:name="Times" svg:font-family="Times"/>
<style:font-face style:name="Helvetica1" svg:font-family="Helvetica" style:font-family-generic="swiss"/>
<style:font-face style:name="Monospace" svg:font-family="Monospace" style:font-pitch="fixed"/>
<style:font-face style:name="DejaVu Sans" svg:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
</office:font-face-decls>
<office:styles>
<style:default-style style:family="graphic">
<style:graphic-properties draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="true"/>
<style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
<style:tab-stops/>
</style:paragraph-properties>
<style:text-properties style:use-window-font-color="true" fo:font-size="12pt" fo:language="en" fo:country="IN" style:letter-kerning="true" style:font-size-asian="10.5pt" style:language-asian="zxx" style:country-asian="none" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none"/>
</style:default-style>
<style:default-style style:family="paragraph">
<style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
<style:text-properties style:use-window-font-color="true" style:font-name="Times" fo:font-size="12pt" fo:language="en" fo:country="IN" style:letter-kerning="true" style:font-name-asian="DejaVu Sans" style:font-size-asian="10.5pt" style:language-asian="zxx" style:country-asian="none" style:font-name-complex="DejaVu Sans" style:font-size-complex="12pt" style:language-complex="zxx" style:country-complex="none" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
</style:default-style>
<style:default-style style:family="table">
<style:table-properties table:border-model="collapsing"/>
</style:default-style>
<style:default-style style:family="table-row">
<style:table-row-properties fo:keep-together="always"/>
</style:default-style>
<style:style style:name="Standard" style:family="paragraph" style:class="text"/>
<style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
<style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.212cm"/>
</style:style>
<style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
<style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" fo:keep-with-next="always"/>
<style:text-properties style:font-name="Helvetica" fo:font-size="14pt" style:font-name-asian="DejaVu Sans" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans" style:font-size-complex="14pt"/>
</style:style>
<style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
<style:text-properties style:font-name="Times" style:font-size-asian="12pt"/>
</style:style>
<style:style style:name="Header" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
<style:paragraph-properties text:number-lines="false" text:line-number="0">
<style:tab-stops>
<style:tab-stop style:position="8.498cm" style:type="center"/>
<style:tab-stop style:position="16.999cm" style:type="right"/>
</style:tab-stops>
</style:paragraph-properties>
<style:text-properties fo:color="#0000ff" style:font-size-asian="10.5pt"/>
</style:style>
<style:style style:name="Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
<style:paragraph-properties text:number-lines="false" text:line-number="0">
<style:tab-stops>
<style:tab-stop style:position="8.498cm" style:type="center"/>
<style:tab-stop style:position="16.999cm" style:type="right"/>
</style:tab-stops>
</style:paragraph-properties>
</style:style>
<style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
<style:paragraph-properties text:number-lines="false" text:line-number="0"/>
</style:style>
<style:style style:name="Table_20_Heading" style:display-name="Table Heading" style:family="paragraph" style:parent-style-name="Table_20_Contents" style:class="extra">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false" text:number-lines="false" text:line-number="0"/>
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
<style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" text:number-lines="false" text:line-number="0"/>
<style:text-properties style:font-name="Times" fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-size-complex="12pt" style:font-style-complex="italic"/>
</style:style>
<style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
<style:paragraph-properties text:number-lines="false" text:line-number="0"/>
<style:text-properties style:font-name="Times" style:font-size-asian="12pt"/>
</style:style>
<style:style style:name="Footnote_20_Symbol" style:display-name="Footnote Symbol" style:family="text"/>
<style:style style:name="Endnote_20_Symbol" style:display-name="Endnote Symbol" style:family="text"/>
<style:style style:name="Graphics" style:family="graphic">
<style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" style:wrap="dynamic" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="center" style:horizontal-rel="paragraph"/>
</style:style>
<text:outline-style>
<text:outline-level-style text:level="1" style:num-format="">
<style:list-level-properties text:min-label-distance="0.381cm"/>
</text:outline-level-style>
<text:outline-level-style text:level="2" style:num-format="">
<style:list-level-properties text:min-label-distance="0.381cm"/>
</text:outline-level-style>
<text:outline-level-style text:level="3" style:num-format="">
<style:list-level-properties text:min-label-distance="0.381cm"/>
</text:outline-level-style>
<text:outline-level-style text:level="4" style:num-format="">
<style:list-level-properties text:min-label-distance="0.381cm"/>
</text:outline-level-style>
<text:outline-level-style text:level="5" style:num-format="">
<style:list-level-properties text:min-label-distance="0.381cm"/>
</text:outline-level-style>
<text:outline-level-style text:level="6" style:num-format="">
<style:list-level-properties text:min-label-distance="0.381cm"/>
</text:outline-level-style>
<text:outline-level-style text:level="7" style:num-format="">
<style:list-level-properties text:min-label-distance="0.381cm"/>
</text:outline-level-style>
<text:outline-level-style text:level="8" style:num-format="">
<style:list-level-properties text:min-label-distance="0.381cm"/>
</text:outline-level-style>
<text:outline-level-style text:level="9" style:num-format="">
<style:list-level-properties text:min-label-distance="0.381cm"/>
</text:outline-level-style>
<text:outline-level-style text:level="10" style:num-format="">
<style:list-level-properties text:min-label-distance="0.381cm"/>
</text:outline-level-style>
</text:outline-style>
<text:notes-configuration text:note-class="footnote" text:citation-style-name="Footnote_20_Symbol" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="page"/>
<text:notes-configuration text:note-class="endnote" text:citation-style-name="Endnote_20_Symbol" text:master-page-name="Endnote" style:num-format="1" text:start-value="0"/>
<text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
</office:styles>
<office:automatic-styles>
<style:style style:name="Table2" style:family="table">
<style:table-properties style:width="16.999cm" table:align="margins"/>
</style:style>
<style:style style:name="Table2.A" style:family="table-column">
<style:table-column-properties style:column-width="4.235cm" style:rel-column-width="16329*"/>
</style:style>
<style:style style:name="Table2.B" style:family="table-column">
<style:table-column-properties style:column-width="12.764cm" style:rel-column-width="49206*"/>
</style:style>
<style:style style:name="Table2.A1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="bottom" fo:padding="0.097cm" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.018cm solid #000000"/>
</style:style>
<style:style style:name="Table3" style:family="table">
<style:table-properties style:width="7.936cm" table:align="left"/>
</style:style>
<style:style style:name="Table3.A" style:family="table-column">
<style:table-column-properties style:column-width="1.933cm"/>
</style:style>
<style:style style:name="Table3.B" style:family="table-column">
<style:table-column-properties style:column-width="6.003cm"/>
</style:style>
<style:style style:name="Table3.A1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="bottom" fo:padding="0.097cm" fo:border="none"/>
</style:style>
<style:style style:name="Table3.A2" style:family="table-cell">
<style:table-cell-properties style:vertical-align="bottom" fo:padding="0.097cm" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.018cm solid #000000"/>
</style:style>
<style:style style:name="Table1" style:family="table">
<style:table-properties style:width="16.999cm" table:align="margins"/>
</style:style>
<style:style style:name="Table1.A" style:family="table-column">
<style:table-column-properties style:column-width="16.999cm" style:rel-column-width="65535*"/>
</style:style>
<style:style style:name="Table1.A1" style:family="table-cell">
<style:table-cell-properties fo:background-color="transparent" fo:padding="0.097cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.018cm solid #000000" fo:border-bottom="none">
<style:background-image/>
</style:table-cell-properties>
</style:style>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Header">
<style:text-properties fo:color="#0000ff" style:font-name="Helvetica1" fo:font-size="30pt" style:font-name-asian="Monospace" style:font-size-asian="30pt" style:font-name-complex="Monospace" style:font-size-complex="30pt"/>
</style:style>
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
<style:text-properties fo:color="#0000ff" style:font-name="Helvetica1" fo:font-size="10pt" style:font-name-asian="Monospace" style:font-size-asian="10pt" style:font-name-complex="Monospace" style:font-size-complex="10pt"/>
</style:style>
<style:style style:name="P3" style:family="paragraph" style:parent-style-name="Header">
<style:text-properties style:font-name="Monospace" fo:font-size="10pt" style:font-name-asian="Monospace" style:font-size-asian="10pt" style:font-name-complex="Monospace" style:font-size-complex="10pt"/>
</style:style>
<style:style style:name="P4" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties fo:color="#0000ff" style:font-name="Helvetica1" fo:font-size="10pt" style:font-size-asian="8.75pt" style:font-size-complex="10pt"/>
</style:style>
<style:style style:name="P5" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
<style:text-properties fo:color="#0000ff" style:font-name="Monospace" fo:font-size="10pt" style:font-name-asian="Monospace" style:font-size-asian="10pt" style:font-name-complex="Monospace" style:font-size-complex="10pt"/>
</style:style>
<style:style style:name="P6" style:family="paragraph" style:parent-style-name="Header">
<style:text-properties style:font-name="Helvetica1" fo:font-size="10pt" style:font-size-asian="8.75pt" style:font-size-complex="10pt"/>
</style:style>
<style:style style:name="P7" style:family="paragraph" style:parent-style-name="Footer">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
<style:text-properties fo:color="#0000ff" style:font-name="Helvetica1" fo:font-size="10pt" style:font-name-asian="Monospace" style:font-size-asian="10pt" style:font-name-complex="Monospace" style:font-size-complex="10pt"/>
</style:style>
<style:page-layout style:name="pm1">
<style:page-layout-properties fo:page-width="20.999cm" fo:page-height="29.699cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
<style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
</style:page-layout-properties>
<style:header-style>
<style:header-footer-properties fo:min-height="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0.499cm"/>
</style:header-style>
<style:footer-style>
<style:header-footer-properties fo:min-height="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.499cm"/>
</style:footer-style>
</style:page-layout>
<style:page-layout style:name="pm2">
<style:page-layout-properties fo:page-width="20.999cm" fo:page-height="29.699cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
<style:footnote-sep style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
</style:page-layout-properties>
<style:header-style/>
<style:footer-style/>
</style:page-layout>
</office:automatic-styles>
<office:master-styles>
<style:master-page style:name="Standard" style:page-layout-name="pm1">
<style:header>
<table:table table:name="Table2" table:style-name="Table2">
<table:table-column table:style-name="Table2.A"/>
<table:table-column table:style-name="Table2.B"/>
<table:table-row>
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
<text:p text:style-name="P1">Tiny sprl</text:p>
</table:table-cell>
<table:table-cell table:style-name="Table2.A1" office:value-type="string">
<text:p text:style-name="P2"/>
</table:table-cell>
</table:table-row>
</table:table>
<text:p text:style-name="P3"/>
<text:p text:style-name="P3">- </text:p>
<table:table table:name="Table3" table:style-name="Table3">
<table:table-column table:style-name="Table3.A"/>
<table:table-column table:style-name="Table3.B"/>
<table:table-row>
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
<text:p text:style-name="P4">Phone :</text:p>
</table:table-cell>
<table:table-cell table:style-name="Table3.A1" office:value-type="string">
<text:p text:style-name="P5"/>
</table:table-cell>
</table:table-row>
<table:table-row>
<table:table-cell table:style-name="Table3.A2" office:value-type="string">
<text:p text:style-name="P4">Mail :</text:p>
</table:table-cell>
<table:table-cell table:style-name="Table3.A2" office:value-type="string">
<text:p text:style-name="P5"/>
</table:table-cell>
</table:table-row>
</table:table>
<text:p text:style-name="P6"/>
</style:header>
<style:footer>
<table:table table:name="Table1" table:style-name="Table1">
<table:table-column table:style-name="Table1.A"/>
<table:table-row>
<table:table-cell table:style-name="Table1.A1" office:value-type="string">
<text:p text:style-name="P7"/>
<text:p text:style-name="P7"/>
<text:p text:style-name="P7">Contact : Administrator</text:p>
</table:table-cell>
</table:table-row>
</table:table>
</style:footer>
</style:master-page>
<style:master-page style:name="Endnote" style:page-layout-name="pm2"/>
</office:master-styles>
</office:document-styles>

View File

@ -15,15 +15,6 @@
Process Node
-->
<record id="process_node_jobshiring0" model="process.node">
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Jobs hiring&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Process to search, interview and evaluate new candidates&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_employeecontractworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'open', 'pending', 'done', 'cancel')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
<record id="process_node_employee0" model="process.node">
<field name="menu_id" ref="hr.menu_open_view_employee_list"/>
<field name="model_id" ref="hr.model_hr_employee"/>
@ -67,15 +58,6 @@
<field model="process.node" name="source_node_id" ref="process_node_employee0"/>
</record>
<record id="process_transition_employeejob0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Employee Job&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;After confirming job, he will be a employee&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_employee0"/>
<field model="process.node" name="source_node_id" ref="process_node_jobshiring0"/>
</record>
<record id="process_transition_contactofemployee0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>

View File

@ -10,7 +10,7 @@
<field name="menu_id" ref="hr_timesheet.menu_act_hr_timesheet_line_evry1_today_form"/>
<field name="model_id" ref="hr.model_hr_timesheet"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Timesheet_task&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Timesheet task&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Complete Your Timesheet.&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="project.process_process_tasksworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
@ -66,7 +66,7 @@
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Task timesheet&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Moves task entry into the timesheet line&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_timesheettask0"/>
<field model="process.node" name="target_node_id" ref="hr_timesheet_sheet.process_node_timesheet0"/>
<field model="process.node" name="source_node_id" ref="process_node_workontask0"/>
</record>

View File

@ -635,7 +635,7 @@ class hr_timesheet_sheet_sheet_account(osv.osv):
'sheet_id': fields.many2one('hr_timesheet_sheet.sheet', 'Sheet', readonly=True),
'total': fields.float('Total Time', digits=(16,2), readonly=True),
'invoice_rate': fields.many2one('hr_timesheet_invoice.factor', 'Invoice rate', readonly=True),
}
}
def init(self, cr):
cr.execute("""create or replace view hr_timesheet_sheet_sheet_account as (

View File

@ -41,8 +41,9 @@
<field name="menu_id" ref="hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form_my_current"/>
<field name="model_id" ref="hr_timesheet_sheet.model_hr_timesheet_sheet_sheet"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Timesheet Confirming&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Timesheet&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Timesheet sheet confirm at the end of the period&quot;&quot;&quot;" name="note"/>
<field name="subflow_id" ref="process_process_hrtimesheetworkflow0"/>
<field name="process_id" ref="hr_timesheet.process_process_timesheetworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='confirm'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
@ -72,7 +73,6 @@
<record id="process_node_attendance0" model="process.node">
<field name="menu_id" ref="hr_attendance.menu_si_so"/>
<field name="model_id" ref="hr.model_hr_employee"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Attendance&quot;&quot;&quot;" name="name"/>
@ -129,9 +129,10 @@
<record id="process_node_invoiceonwork0" model="process.node">
<field name="menu_id" ref="account.menu_finance_invoice"/>
<field name="model_id" ref="account.model_account_invoice"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Invoice on Work&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Invoice based on timesheet&quot;&quot;&quot;" name="note"/>
<field name="subflow_id" ref="account.process_process_invoiceworkflow0"/>
<field name="process_id" ref="process_process_hrtimesheetworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
@ -149,7 +150,7 @@
<field name="role_id" ref="res_roles_hr0"/>
</record>
<record id="process_transition_attendance0" model="process.transition">
<record id="process_transition_attendancetimesheet0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Attendance&quot;&quot;&quot;" name="name"/>
@ -158,7 +159,7 @@
<field model="process.node" name="source_node_id" ref="process_node_attendance0"/>
</record>
<record id="process_transition_timesheet0" model="process.transition">
<record id="process_transition_timesheetdraft0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Timesheet&quot;&quot;&quot;" name="name"/>

View File

@ -64,6 +64,8 @@
"mrp_wizard.xml",
"mrp_report.xml",
"company_view.xml",
"process/stockable_product_process.xml",
"process/service_product_process.xml",
"process/procurement_process.xml",
],
"active": False,

View File

@ -18,7 +18,7 @@
<record id="process_node_productionorder0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_production_action"/>
<field name="model_id" ref="mrp.model_mrp_production"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Procurement for raw materials.&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Production Order&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
@ -29,7 +29,7 @@
<record id="process_node_minimumstockrule0" model="process.node">
<field name="menu_id" ref="mrp.menu_action_orderpoint_form"/>
<field name="model_id" ref="mrp.model_stock_warehouse_orderpoint"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Procurement is created if the product quantity is lower than the minimum limit.&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Minimum Stock Rule&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
@ -47,12 +47,13 @@
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_stockableproduct0" model="process.node">
<record id="process_node_stockproduct0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;For stockable and consumable&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Stockable Product&quot;&quot;&quot;" name="name"/>
<field name="subflow_id" ref="process_process_stockableproductworkflow0"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
@ -61,99 +62,22 @@
<record id="process_node_serviceproduct0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;If Product type is service&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Service Product&quot;&quot;&quot;" name="name"/>
<field name="subflow_id" ref="process_process_serviceproductworkflow0"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_maketostock0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;The system waits for requested products in stock.&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Make to Stock&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_stockablestock0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Wait for available products for reservation&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Stockable Stock&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_stockableorder0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;If procurement is make to order&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Stockable Order&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_maketostock1" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;If Procurement is make to stock&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Make to stock&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_requestforquotation1" model="process.node">
<field name="menu_id" ref="purchase.menu_purchase_order_draft"/>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;A Request for Quotation is created and sent to the supplier.&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Request For Quotation&quot;&quot;&quot;" name="name"/>
<field name="subflow_id" ref="purchase.process_process_purchaseworkflow0"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_productionorder1" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_production_action"/>
<field name="model_id" ref="mrp.model_mrp_production"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Production orders are created for the product manufacturing.&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Production Order&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='confirmed'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_requestforquotation2" model="process.node">
<field name="menu_id" ref="purchase.menu_purchase_form_action"/>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;A purchase order is created for a sub-contracting demand.&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Request For Quotation&quot;&quot;&quot;" name="name"/>
<field name="subflow_id" ref="purchase.process_process_purchaseworkflow0"/>
<field name="process_id" ref="process_process_procurementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_purchaseprocure0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Procurements&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Procurement orders&quot;&quot;&quot;" name="note"/>
<field name="subflow_id" ref="process_process_procurementworkflow0"/>
<field name="process_id" ref="purchase.process_process_purchaseworkflow0"/>
<field eval="1" name="flow_start"/>
</record>
@ -171,7 +95,7 @@
<record id="process_node_routing0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_routing_action"/>
<field name="model_id" ref="mrp.model_mrp_routing"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Routing&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Define a routing to describe the manufacturing steps.&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="product.process_process_productworkflow0"/>
@ -215,7 +139,7 @@
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Procure Stockable Product&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;if Product type is Stockable in procurement order&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_stockableproduct0"/>
<field model="process.node" name="target_node_id" ref="process_node_stockproduct0"/>
<field model="process.node" name="source_node_id" ref="process_node_procureproducts0"/>
</record>
@ -228,69 +152,6 @@
<field model="process.node" name="source_node_id" ref="process_node_procureproducts0"/>
</record>
<record id="process_transition_stockablemaketostock0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Stockable Make to Stock&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If Product type is Stockable and procure method is make to stock&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_maketostock0"/>
<field model="process.node" name="source_node_id" ref="process_node_stockableproduct0"/>
</record>
<record id="process_transition_stockableproductstock0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Stockable Product Stock&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Product type is Stockable and procure method is make to stock&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_stockablestock0"/>
<field model="process.node" name="source_node_id" ref="process_node_stockableproduct0"/>
</record>
<record id="process_transition_serivcestockableorder0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Serivce Stockable Order&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If product type is service and procure method is Make to order&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_stockableorder0"/>
<field model="process.node" name="source_node_id" ref="process_node_serviceproduct0"/>
</record>
<record id="process_transition_servicemaketostock0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Service Make to Stock&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If Product type is service and procure method is Make to stock&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_maketostock1"/>
<field model="process.node" name="source_node_id" ref="process_node_serviceproduct0"/>
</record>
<record id="process_transition_stockablerequest0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Stockable Request&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If Product type is Stockable and procure method is make to stock&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_requestforquotation1"/>
<field model="process.node" name="source_node_id" ref="process_node_stockablestock0"/>
</record>
<record id="process_transition_stockableproductionorder0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Stockable Production Order&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If Procure method is Make to order and supply method is produce&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_productionorder1"/>
<field model="process.node" name="source_node_id" ref="process_node_stockablestock0"/>
</record>
<record id="process_transition_stockableorderrequest0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Stockable Order Request&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If Procure method is Make to order and supply method is buy&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_requestforquotation2"/>
<field model="process.node" name="source_node_id" ref="process_node_stockableorder0"/>
</record>
<record id="process_transition_purchaseprocure0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>

View File

@ -0,0 +1,95 @@
<?xml version="1.0" ?>
<openerp>
<data>
<!--
Process
-->
<record id="process_process_serviceproductworkflow0" model="process.process">
<field eval="&quot;&quot;&quot;Service Product Workflow&quot;&quot;&quot;" name="name"/>
<field eval="1" name="active"/>
</record>
<!--
Process Node
-->
<record id="process_node_serviceproduct1" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;If Product type is service&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Service Product&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_serviceproductworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
<record id="process_node_serviceonorder0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;If procurement is make to order&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Service on Order&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_serviceproductworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_servicemts0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;If Procurement is make to stock&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Make to stock&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_serviceproductworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_orderrfq0" model="process.node">
<field name="menu_id" ref="purchase.menu_purchase_form_action"/>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;A purchase order is created for a sub-contracting demand.&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;RFQ&quot;&quot;&quot;" name="name"/>
<field name="subflow_id" ref="purchase.process_process_purchaseworkflow0"/>
<field name="process_id" ref="process_process_serviceproductworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<!--
Process Transition
-->
<record id="process_transition_servicemto0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Serivce Stockable Order&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If product type is service and procure method is Make to order&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_serviceonorder0"/>
<field model="process.node" name="source_node_id" ref="process_node_serviceproduct1"/>
</record>
<record id="process_transition_servicemts0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Service Make to Stock&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If Product type is service and procure method is Make to stock&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_servicemts0"/>
<field model="process.node" name="source_node_id" ref="process_node_serviceproduct1"/>
</record>
<record id="process_transition_servicerfq0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Stockable Order Request&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If Procure method is Make to order and supply method is buy&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_orderrfq0"/>
<field model="process.node" name="source_node_id" ref="process_node_serviceonorder0"/>
</record>
</data>
</openerp>

View File

@ -0,0 +1,115 @@
<?xml version="1.0" ?>
<openerp>
<data>
<!--
Process
-->
<record id="process_process_stockableproductworkflow0" model="process.process">
<field eval="&quot;&quot;&quot;Stockable Product Workflow&quot;&quot;&quot;" name="name"/>
<field eval="1" name="active"/>
</record>
<!--
Process Node
-->
<record id="process_node_stockproduct1" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;For stockable and consumable&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Stockable Product&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_stockableproductworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
<record id="process_node_mts0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;The system waits for requested products in stock.&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Make to Stock&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_stockableproductworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_stock0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_procurement_action"/>
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Wait for available products for reservation&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Stockable Stock&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_stockableproductworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_rfq0" model="process.node">
<field name="menu_id" ref="purchase.menu_purchase_order_draft"/>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;A Request for Quotation is created and sent to the supplier.&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;RFQ&quot;&quot;&quot;" name="name"/>
<field name="subflow_id" ref="purchase.process_process_purchaseworkflow0"/>
<field name="process_id" ref="process_process_stockableproductworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_production0" model="process.node">
<field name="menu_id" ref="mrp.menu_mrp_production_action"/>
<field name="model_id" ref="mrp.model_mrp_production"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Production orders are created for the product manufacturing.&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Production Order&quot;&quot;&quot;" name="name"/>
<field name="process_id" ref="process_process_stockableproductworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='confirmed'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<!--
Process Transition
-->
<record id="process_transition_stockmts0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Stockable Make to Stock&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If Product type is Stockable and procure method is make to stock&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_mts0"/>
<field model="process.node" name="source_node_id" ref="process_node_stockproduct1"/>
</record>
<record id="process_transition_stockproduct0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Stockable Product Stock&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Product type is Stockable and procure method is make to stock&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_stock0"/>
<field model="process.node" name="source_node_id" ref="process_node_stockproduct1"/>
</record>
<record id="process_transition_stockrfq0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Stockable Request&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If Product type is Stockable and procure method is make to stock&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_rfq0"/>
<field model="process.node" name="source_node_id" ref="process_node_stock0"/>
</record>
<record id="process_transition_stockproduction0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Stockable Production Order&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If Procure method is Make to order and supply method is produce&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_production0"/>
<field model="process.node" name="source_node_id" ref="process_node_stock0"/>
</record>
</data>
</openerp>

View File

@ -48,7 +48,8 @@
"update_xml" : [
"security/product_security.xml",
"security/ir.model.access.csv",
"product_data.xml","product_report.xml",
"product_data.xml",
"product_report.xml",
"product_view.xml", "pricelist_view.xml",
"partner_view.xml", "product_wizard.xml",
"process/product_process.xml"

View File

@ -70,7 +70,6 @@
</td>
</tr><tr>
<td>
<barCode><xsl:value-of select="ean13"/></barCode>
</td><td>
<para style="nospace"><xsl:value-of select="product"/></para><xsl:text>, </xsl:text>
<para style="nospace"><xsl:value-of select="variant"/></para>

View File

@ -64,8 +64,8 @@
<field name="model_id" ref="account.model_account_invoice"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Trigger Invoice&quot;&quot;&quot;" name="name"/>
<field name="subflow_id" search="[('name','=','sale.order.basic')]"/>
<field eval="&quot;&quot;&quot;Trigger invoices from sale order lines (sale subflow)&quot;&quot;&quot;" name="note"/>
<field name="subflow_id" ref="account.process_process_invoiceworkflow0"/>
<field eval="&quot;&quot;&quot;Trigger invoices from sale order lines&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_tasksworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='paid'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>

View File

@ -21,21 +21,22 @@
<record id="process_node_saleordertask0" model="process.node">
<field name="menu_id" ref="sale.menu_sale_order"/>
<field name="model_id" ref="sale.model_sale_order"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Sale_Order_Task&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;In case you sell services on sale order (task subflow)&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Sale Order Task&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;In case you sell services on sale order&quot;&quot;&quot;" name="note"/>
<field name="subflow_id" ref="sale.process_process_salesworkflow0"/>
<field name="process_id" ref="project.process_process_tasksworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
<record id="process_node_procuretask0" model="process.node">
<record id="process_node_mrptask0" model="process.node">
<field name="menu_id" ref="project.menu_action_view_task"/>
<field name="model_id" ref="project.model_project_task"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Task&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;A task is created to provide the service.&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="mrp.process_process_procurementworkflow0"/>
<field name="process_id" ref="mrp.process_process_serviceproductworkflow0"/>
<field name="subflow_id" ref="project.process_process_tasksworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
@ -54,7 +55,6 @@
</record>
<record id="process_transition_createtask0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Create Task&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Product type is service, then its creates the task.&quot;&quot;&quot;" name="note"/>
@ -63,39 +63,37 @@
</record>
<record id="process_transition_ordertask0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Order Task&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;If procure method is Make to order and supply method is produce&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="process_node_procuretask0"/>
<field model="process.node" name="source_node_id" ref="mrp.process_node_stockableorder0"/>
<field eval="[(6,0,[ref('mrp.trans_draft_confirm')])]" name="transition_ids"/>
<field model="process.node" name="target_node_id" ref="process_node_mrptask0"/>
<field model="process.node" name="source_node_id" ref="mrp.process_node_serviceonorder0"/>
</record>
<!--
Process Action
-->
<record id="process_transition_action_orderconfirmtask0" model="process.transition.action">
<field eval="&quot;&quot;&quot;action_confirm&quot;&quot;&quot;" name="action"/>
<field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
<field eval="&quot;&quot;&quot;Confirm&quot;&quot;&quot;" name="name"/>
<field name="transition_id" ref="process_transition_ordertask0"/>
</record>
<record id="process_transition_action_ordercanceltask0" model="process.transition.action">
<field eval="&quot;&quot;&quot;action_cancel&quot;&quot;&quot;" name="action"/>
<field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
<field eval="&quot;&quot;&quot;Cancel&quot;&quot;&quot;" name="name"/>
<field name="transition_id" ref="process_transition_ordertask0"/>
</record>
<record id="process_transition_action_taskrunprocurement0" model="process.transition.action">
<field eval="&quot;&quot;&quot;write({'state':'exception'})&quot;&quot;&quot;" name="action"/>
<field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>
<field eval="&quot;&quot;&quot;Run Procurement&quot;&quot;&quot;" name="name"/>
<field name="transition_id" ref="process_transition_ordertask0"/>
</record>
<!-- <record id="process_transition_action_orderconfirmtask0" model="process.transition.action">-->
<!-- <field eval="&quot;&quot;&quot;action_confirm&quot;&quot;&quot;" name="action"/>-->
<!-- <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>-->
<!-- <field eval="&quot;&quot;&quot;Confirm&quot;&quot;&quot;" name="name"/>-->
<!-- <field name="transition_id" ref="process_transition_ordertask0"/>-->
<!-- </record>-->
<!-- -->
<!-- <record id="process_transition_action_ordercanceltask0" model="process.transition.action">-->
<!-- <field eval="&quot;&quot;&quot;action_cancel&quot;&quot;&quot;" name="action"/>-->
<!-- <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>-->
<!-- <field eval="&quot;&quot;&quot;Cancel&quot;&quot;&quot;" name="name"/>-->
<!-- <field name="transition_id" ref="process_transition_ordertask0"/>-->
<!-- </record>-->
<!-- -->
<!-- <record id="process_transition_action_taskrunprocurement0" model="process.transition.action">-->
<!-- <field eval="&quot;&quot;&quot;write({'state':'exception'})&quot;&quot;&quot;" name="action"/>-->
<!-- <field eval="&quot;&quot;&quot;object&quot;&quot;&quot;" name="state"/>-->
<!-- <field eval="&quot;&quot;&quot;Run Procurement&quot;&quot;&quot;" name="name"/>-->
<!-- <field name="transition_id" ref="process_transition_ordertask0"/>-->
<!-- </record>-->
</data>
</openerp>

View File

@ -14,6 +14,17 @@
<!--
Process Node
-->
<record id="process_node_packinginvoice0" model="process.node">
<field name="menu_id" ref="stock.menu_picking_waiting"/>
<field name="model_id" ref="stock.model_stock_picking"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Out Packing&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Invoice based on deliveries&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="account.process_process_invoiceworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('assigned', 'confirmed')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
<record id="process_node_purchaseorder0" model="process.node">
<field name="menu_id" ref="purchase.menu_purchase_form_action"/>
@ -31,7 +42,7 @@
<field name="menu_id" ref="purchase.menu_purchase_order_draft"/>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Request for Quotation&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;RFQ&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Request for quotation is proposed by the system.&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_purchaseworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
@ -41,8 +52,8 @@
<record id="process_node_draftpurchaseorder1" model="process.node">
<field name="menu_id" ref="purchase.menu_purchase_order_draft"/>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Request for Quotation&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;RFQ&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Encoded manually by the user.&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_purchaseworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
@ -78,7 +89,7 @@
<field eval="&quot;&quot;&quot;Draft Invoice&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Pre-generated supplier invoice to control based on order&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_purchaseworkflow0"/>
<field name="subflow_id" ref="account.process_process_invoiceworkflow0"/>
<field name="subflow_id" ref="account.process_process_supplierinvoiceworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
@ -101,11 +112,23 @@
<field eval="&quot;&quot;&quot;Draft Invoice&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Supplier Invoice pre-generated on receptions for control&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_purchaseworkflow0"/>
<field name="subflow_id" ref="account.process_process_invoiceworkflow0"/>
<field name="subflow_id" ref="account.process_process_supplierinvoiceworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<record id="process_node_productrecept0" model="process.node">
<field name="menu_id" ref="stock.menu_picking_waiting"/>
<field name="model_id" ref="stock.model_stock_picking"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Product Receipt&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Control invoices on receptions&quot;&quot;&quot;" name="note"/>
<field name="subflow_id" ref="process_process_purchaseworkflow0"/>
<field name="process_id" ref="account.process_process_supplierinvoiceworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'open', 'pending', 'close')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
<!--
Process Condition
-->
@ -139,6 +162,15 @@
<record id="purchase.trans_router_invoice" model="workflow.transition">
<field name="role_id" ref="res_roles_purchase0"/>
</record>
<record id="process_transition_productrecept0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Product recept invoice&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Create invoice from product recept&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="account.process_node_supplierdraftinvoices0"/>
<field model="process.node" name="source_node_id" ref="process_node_productrecept0"/>
</record>
<record id="process_transition_confirmingpurchaseorder0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
@ -205,6 +237,15 @@
<field model="process.node" name="source_node_id" ref="process_node_purchaseorder0"/>
</record>
<record id="process_transition_packinginvoice0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Packing Invoice&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;From Packing list, Create invoice.&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="account.process_node_draftinvoices0"/>
<field model="process.node" name="source_node_id" ref="process_node_packinginvoice0"/>
</record>
<!--
Process Action
-->

View File

@ -33,6 +33,7 @@
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Sale Order Procurement&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Procurement for each line&quot;&quot;&quot;" name="note"/>
<field name="subflow_id" ref="process_process_salesworkflow0"/>
<field name="process_id" ref="mrp.process_process_procurementworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'waiting_date', 'manual', 'progress', 'shipping_except', 'invoice_except', 'done', 'cancel')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
@ -42,7 +43,7 @@
<field name="menu_id" ref="sale.menu_action_order_tree10"/>
<field name="model_id" ref="sale.model_sale_order"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Ok&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Quotation&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Quotation (A sale order in draft state)&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_salesworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='draft'&quot;&quot;&quot;" name="model_states"/>
@ -53,8 +54,8 @@
<field name="menu_id" ref="sale.menu_action_order_tree9"/>
<field name="model_id" ref="sale.model_sale_order"/>
<field eval="&quot;&quot;&quot;state&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Ok&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Ok&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Sale Order&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Manages the delivery and invoicing progress&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_salesworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='manual'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
@ -66,6 +67,7 @@
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Procurement&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;One procurement for each product.&quot;&quot;&quot;" name="note"/>
<field name="subflow_id" ref="mrp.process_process_procurementworkflow0"/>
<field name="process_id" ref="process_process_salesworkflow0"/>
<field eval="&quot;&quot;&quot;object.state=='confirmed'&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>

View File

@ -22,6 +22,7 @@
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;CRM Opportunity&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;The CRM Opportunity can lead to a quotation.&quot;&quot;&quot;" name="note"/>
<field name="subflow_id" ref="crm_configuration.process_process_contractworkflow0"/>
<field name="process_id" ref="sale.process_process_salesworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'open', 'pending', 'done', 'cancel')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>

View File

@ -42,7 +42,6 @@
"report_stock_view.xml",
"security/stock_security.xml",
"security/ir.model.access.csv",
"process/stock_process.xml"
],
"active": False,
"installable": True

View File

@ -1,47 +0,0 @@
<?xml version="1.0" ?>
<openerp>
<data>
<record id="process_node_packinginvoice0" model="process.node">
<field name="menu_id" ref="stock.menu_picking_waiting"/>
<field name="model_id" ref="stock.model_stock_picking"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Out Packing&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Invoice based on deliveries&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="account.process_process_invoiceworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('assigned', 'confirmed')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
<record id="process_node_productrecept0" model="process.node">
<field name="menu_id" ref="stock.menu_picking_waiting"/>
<field name="model_id" ref="stock.model_stock_picking"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Product Recept&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Control invoices on receptions&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="account.process_process_supplierinvoiceworkflow0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'open', 'pending', 'close')&quot;&quot;&quot;" name="model_states"/>
<field eval="1" name="flow_start"/>
</record>
<record id="process_transition_productrecept0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Product recept invoice&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Create invoice from product recept&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="account.process_node_supplierdraftinvoices0"/>
<field model="process.node" name="source_node_id" ref="process_node_productrecept0"/>
</record>
<record id="process_transition_packinginvoice0" model="process.transition">
<field eval="[(6,0,[])]" name="role_ids"/>
<field eval="[(6,0,[])]" name="transition_ids"/>
<field eval="&quot;&quot;&quot;Packing Invoice&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;From Packing list, Create invoice.&quot;&quot;&quot;" name="note"/>
<field model="process.node" name="target_node_id" ref="account.process_node_draftinvoices0"/>
<field model="process.node" name="source_node_id" ref="process_node_packinginvoice0"/>
</record>
</data>
</openerp>