bzr revid: vir@tinyerp.com-20100713052921-mikfou2kaenur6n0
This commit is contained in:
Vir (Open ERP)
2010-07-13 10:59:21 +05:30
132 changed files with 1827 additions and 4074 deletions
+8 -9
View File
@@ -482,7 +482,6 @@ class account_move_line(osv.osv):
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'account_move_line_journal_id_period_id_index\'')
if not cr.fetchone():
cr.execute('CREATE INDEX account_move_line_journal_id_period_id_index ON account_move_line (journal_id, period_id)')
cr.commit()
def _check_no_view(self, cr, uid, ids):
lines = self.browse(cr, uid, ids)
@@ -797,7 +796,7 @@ class account_move_line(osv.osv):
title = self.view_header_get(cr, uid, view_id, view_type, context)
xml = '''<?xml version="1.0"?>\n<tree string="%s" editable="top" refresh="5" on_write="on_create_write">\n\t''' % (title)
journal_pool = self.pool.get('account.journal')
ids = journal_pool.search(cr, uid, [])
journals = journal_pool.browse(cr, uid, ids)
all_journal = [None]
@@ -814,14 +813,14 @@ class account_move_line(osv.osv):
else:
fields.get(field.field).append(journal.id)
common_fields[field.field] = common_fields[field.field] + 1
fld.append(('period_id', 3))
fld.append(('journal_id', 10))
flds.append('period_id')
flds.append('journal_id')
fields['period_id'] = all_journal
fields['journal_id'] = all_journal
from operator import itemgetter
fld = sorted(fld, key=itemgetter(1))
@@ -835,13 +834,13 @@ class account_move_line(osv.osv):
for field_it in fld:
field = field_it[0]
if common_fields.get(field) == total:
fields.get(field).append(None)
if field=='state':
state = 'colors="red:state==\'draft\'"'
attrs = []
if field == 'debit':
attrs.append('sum="Total debit"')
@@ -864,7 +863,7 @@ class account_move_line(osv.osv):
if field in widths:
attrs.append('width="'+str(widths[field])+'"')
attrs.append("invisible=\"context.get('visible_id') not in %s\"" % (fields.get(field)))
xml += '''<field name="%s" %s/>\n''' % (field,' '.join(attrs))
@@ -914,7 +913,7 @@ class account_move_line(osv.osv):
journal = self.pool.get('account.journal').browse(cr, uid, [journal_id])[0]
if journal.allow_date and period_id:
period = self.pool.get('account.period').browse(cr, uid, [period_id])[0]
if not time.strptime(vals['date'],'%Y-%m-%d')>=time.strptime(period.date_start,'%Y-%m-%d') or not time.strptime(vals['date'],'%Y-%m-%d')<=time.strptime(period.date_stop,'%Y-%m-%d'):
if not time.strptime(vals['date'][:10],'%Y-%m-%d')>=time.strptime(period.date_start,'%Y-%m-%d') or not time.strptime(vals['date'][:10],'%Y-%m-%d')<=time.strptime(period.date_stop,'%Y-%m-%d'):
raise osv.except_osv(_('Error'),_('The date of your Ledger Posting is not in the defined period !'))
else:
return True
File diff suppressed because it is too large Load Diff
-2
View File
@@ -46,7 +46,6 @@ class journal_print(report_sxw.rml_parse):
ids_journal_period = obj_jperiod.search(self.cr, self.uid, [('journal_id','=',journal), ('period_id','=',period)])
if ids_journal_period:
self.cr.execute('update account_journal_period set state=%s where journal_id=%s and period_id=%s and state=%s', ('printed',journal,period,'draft'))
self.cr.commit()
self.cr.execute('select id from account_move_line where period_id=%s and journal_id=%s and state<>\'draft\' order by ('+ sort_selection +'),id', (period, journal))
ids = map(lambda x: x[0], self.cr.fetchall())
ids_final.append(ids)
@@ -56,7 +55,6 @@ class journal_print(report_sxw.rml_parse):
line_ids.append(a)
return line_ids
self.cr.execute('update account_journal_period set state=%s where journal_id=%s and period_id=%s and state=%s', ('printed',journal_id,period_id,'draft'))
self.cr.commit()
self.cr.execute('select id from account_move_line where period_id=%s and journal_id=%s and state<>\'draft\' order by date,id', (period_id, journal_id))
ids = map(lambda x: x[0], self.cr.fetchall())
return obj_mline.browse(self.cr, self.uid, ids)
+241 -138
View File
@@ -127,10 +127,10 @@
<lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/>
<lineStyle kind="LINEABOVE" colorName="#000000" start="2,0" stop="2,0"/>
</blockTableStyle>
<blockTableStyle id="Table_Main_Table">
<blockTableStyle id="Table4">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,0" stop="0,-1"/>
<!--lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEAFTER" colorName="#ffffff" start="0,0" stop="0,-1"/>
<lineStyle kind="LINEABOVE" colorName="#ffffff" start="0,0" stop="0,0"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
@@ -149,65 +149,51 @@
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="3,-1" stop="3,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="2,-1" stop="2,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#ffffff" start="0,4" stop="0,-1"/>
<lineStyle kind="LINEAFTER" colorName="#ffffff" start="0,4" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/-->
</blockTableStyle>
<blockTableStyle id="Table_Tax_Header">
<blockTableStyle id="Table6">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/>
</blockTableStyle>
<blockTableStyle id="Table_Tax_Content">
<blockTableStyle id="Table5">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
</blockTableStyle>
<blockTableStyle id="Table_Table_Border_White">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#ffffff" start="2,-1" stop="2,-1"/>
</blockTableStyle>
<blockTableStyle id="Table_Final_Border">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEABOVE" colorName="#ffffff" start="0,0" stop="0,0"/>
<lineStyle kind="LINEABOVE" colorName="#ffffff" start="1,0" stop="1,0"/>
</blockTableStyle>
<blockTableStyle id="Table_Coment_Payment_Term">
<blockTableStyle id="Table3">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table_Payment_Terms">
<blockTableStyle id="Table2">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table1">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle name="Standard" fontName="Times-Roman"/>
<paraStyle name="Text body" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="List" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Contents" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Heading" fontName="Times-Roman" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Caption" fontName="Times-Roman" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Times-Roman"/>
<paraStyle name="Standard" fontName="Helvetica"/>
<paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Contents" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Caption" fontName="Helvetica" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Helvetica"/>
<paraStyle name="Heading" fontName="Helvetica" fontSize="15.0" leading="19" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_8" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Footer" fontName="Times-Roman"/>
<paraStyle name="P8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="0.0"/>
<paraStyle name="Horizontal Line" fontName="Times-Roman" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
<paraStyle name="Footer" fontName="Helvetica"/>
<paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
<paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
@@ -227,25 +213,32 @@
<paraStyle name="terp_default_Right_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_Right_9" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_2" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_White_2" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_White_2" rightIndent="0.0" leftIndent="0.0" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0" textColor="#ffffff"/>
<paraStyle name="terp_default_Note" rightIndent="0.0" leftIndent="9.0" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Table" fontName="Helvetica" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/>
<images/>
</stylesheet>
<images/>
<story>
<para style="terp_default_8">[[ repeatIn(objects,'o') ]]</para>
<para style="terp_default_8">[[ setLang(o.partner_id.lang) ]] </para>
<para style="terp_default_8">[[ setLang(o.partner_id.lang) ]]</para>
<blockTable colWidths="297.0,233.0" style="Table_Partner_Address">
<tr>
<td><para style="P8"><font color="white"> </font></para></td>
<td>
<para style="terp_default_8">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
<para style="terp_default_8">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_8">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
<para style="terp_default_8">[[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]]</para>
<para style="terp_default_8">[[ o.address_invoice_id.street ]]</para>
<para style="terp_default_8">[[ o.address_invoice_id.street2 or '' ]]</para>
<para style="terp_default_8">[[ o.address_invoice_id.zip or '' ]] [[ o.address_invoice_id.city or '' ]]</para>
<para style="terp_default_8">[[ o.address_invoice_id.state_id and o.address_invoice_id.state_id.name or '' ]]</para>
<para style="terp_default_8">[[ o.address_invoice_id.country_id and o.address_invoice_id.country_id.name or '' ]]</para>
<para style="P8"><font color="white"> </font></para>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<para style="terp_default_8">Tel. : [[ o.address_invoice_id.phone or removeParentNode('para') ]]</para>
<para style="terp_default_8">Fax : [[ o.address_invoice_id.fax or removeParentNode('para') ]]</para>
<para style="terp_default_8">VAT : [[ o.partner_id.vat or removeParentNode('para') ]]</para>
@@ -255,168 +248,278 @@
<para style="terp_header">Invoice [[ ((o.type == 'out_invoice' and (o.state == 'open' or o.state == 'paid')) or removeParentNode('para')) and '' ]] [[ o.number ]]</para>
<para style="terp_header">PRO-FORMA [[ ((o.type == 'out_invoice' and o.state == 'proforma2') or removeParentNode('para')) and '' ]]</para>
<para style="terp_header">Draft Invoice [[ ((o.type == 'out_invoice' and o.state == 'draft') or removeParentNode('para')) and '' ]]</para>
<para style="terp_header">Canceled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]]</para>
<para style="terp_header">Cancelled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]] [[ o.number ]]</para>
<para style="terp_header">Refund [[ (o.type=='out_refund' or removeParentNode('para')) and '' ]] [[ o.number ]]</para>
<para style="terp_header">Supplier Refund [[ (o.type=='in_refund' or removeParentNode('para')) and '' ]] [[ o.number ]]</para>
<para style="terp_header">Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]] [[ o.number ]]</para>
<para style="P8"><font color="white"> </font></para>
<para style="terp_default_8">
<font color="white"> </font>
</para>
<blockTable colWidths="177.0,177.0,177.0" style="Table_Invoice_General_Header">
<tr>
<td><para style="terp_tblheader_General_Centre">Document</para></td>
<td><para style="terp_tblheader_General_Centre">Invoice Date</para></td>
<td><para style="terp_tblheader_General_Centre">Partner Ref.</para></td>
<td>
<para style="terp_tblheader_General_Centre">Document</para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Invoice Date</para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Partner Ref.</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="177.0,177.0,177.0" style="Table_General_Detail_Content">
<tr>
<td><para style="terp_default_Centre_9">[[ o.name ]]</para></td>
<td><para style="terp_default_Centre_9">[[ formatLang(o.date_invoice,date=True) ]]</para></td>
<td><para style="terp_default_Centre_9">[[ o.address_invoice_id.partner_id.ref or '' ]]</para></td>
<td>
<para style="terp_default_Centre_9">[[ o.name ]]</para>
</td>
<td>
<para style="terp_default_Centre_9">[[ formatLang(o.date_invoice,date=True) ]]</para>
</td>
<td>
<para style="terp_default_Centre_9">[[ o.address_invoice_id.partner_id.ref or '' ]]</para>
</td>
</tr>
</blockTable>
<para style="P8"><font color="white"></font></para>
<para style="P8"><font color="white"> </font></para>
<blockTable colWidths="211.0,62.0,63.0,63.0,40.0,84.0" style="Table_Header_Invoice_Line">
<para style="terp_default_8">
<font color="white"> </font>
</para>
<blockTable colWidths="211.0,62.0,63.0,63.0,43.0,83.0" style="Table_Header_Invoice_Line">
<tr>
<td><para style="terp_tblheader_Details">Description</para></td>
<td><para style="terp_tblheader_Details">Taxes</para></td>
<td><para style="terp_tblheader_Details">Quantity</para></td>
<td><para style="terp_tblheader_Details_Centre">Unit Price</para></td>
<td><para style="terp_tblheader_Details">Disc.(%)</para></td>
<td><para style="terp_tblheader_Details_Centre">Price</para></td>
<td>
<para style="terp_tblheader_Details">Description</para>
</td>
<td>
<para style="terp_tblheader_Details">Taxes</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Quantity</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Unit Price</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Disc.(%)</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Price</para>
</td>
</tr>
</blockTable>
<section>
<para style="terp_default_8">[[ repeatIn(o.invoice_line,'l') ]]</para>
<blockTable colWidths="211.0,62.0,36.0,27.0,63.0,36.0,62.0,26.0" style="Table_Invoice_Line_Content">
<blockTable colWidths="211.0,62.0,41.0,22.0,63.0,42.0,59.0,23.0" style="Table_Invoice_Line_Content">
<tr>
<td><para style="terp_default_9">[[ l.name ]]</para></td>
<td><para style="terp_default_9">[[ ', '.join([ lt.description or '' for lt in l.invoice_line_tax_id ]) ]]</para></td>
<td><para style="terp_default_Right_9">[[ formatLang(l.quantity)]]</para></td>
<td><para style="terp_default_Right_9">[[ (l.uos_id and l.uos_id.name) or '' ]]</para></td>
<td><para style="terp_default_Right_9">[[ formatLang(l.price_unit) ]]</para></td>
<td><para style="terp_default_Right_9">[[ formatLang(l.discount) ]] </para></td>
<td><para style="terp_default_Right_9">[[ formatLang(l.price_subtotal) ]]</para></td>
<td><para style="terp_default_Right_9">[[ o.currency_id.code ]]</para></td>
<td>
<para style="terp_default_9">[[ l.name ]]</para>
</td>
<td>
<para style="terp_default_9">[[ ', '.join([ lt.name or '' for lt in l.invoice_line_tax_id ]) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(l.quantity)]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ (l.uos_id and l.uos_id.name) or '' ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(l.price_unit) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(l.discount) ]] </para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(l.price_subtotal) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ o.currency_id.code ]]</para>
</td>
</tr>
<tr>
<td><para style="terp_default_Note">[[ format(l.note) or removeParentNode('tr') ]]</para></td>
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
<td><para style="terp_default_Note"><font color="white"> </font></para></td>
<td>
<para style="terp_default_Note">[[ format(l.note or '') or removeParentNode('tr') ]]</para>
<para style="terp_default_Note">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Note">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Note">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Note">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Note">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Note">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Note">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Note">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
</section>
<blockTable colWidths="371.0,153.0" style="Table_Format_2">
<blockTable colWidths="370.0,153.0" style="Table_Format_2">
<tr>
<td>
<blockTable colWidths="176.0,258.0" style="Table_format_Table_Line_total">
<tr>
<td><para style="terp_default_2"><font color="white"> </font></para></td>
<td><para style="terp_default_2"><font color="white"> </font></para></td>
<td>
<para style="terp_default_2">
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_2">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
</td>
<td>
<blockTable colWidths="62.0,59.0,25.0" style="Table_eclu_Taxes_Total">
<blockTable colWidths="62.0,62.0,22.0" style="Table_eclu_Taxes_Total">
<tr>
<td><para style="terp_default_Bold_9">Net Total:</para></td>
<td><para style="terp_default_Right_9">[[ formatLang(o.amount_untaxed) ]]</para></td>
<td><para style="terp_default_Right_9">[[ o.currency_id.code ]]</para></td>
<td>
<para style="terp_default_9">Net Total:</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(o.amount_untaxed) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ o.currency_id.code ]]</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="63.0,58.0,26.0" style="Table_Taxes_Total">
<para style="terp_default_2">
<font color="white"> </font>
</para>
<blockTable colWidths="63.0,61.0,23.0" style="Table_Taxes_Total">
<tr>
<td><para style="terp_default_Bold_9">Taxes:</para></td>
<td><para style="terp_default_Right_9">[[ formatLang(o.amount_tax) ]]</para></td>
<td><para style="terp_default_Right_9">[[ o.currency_id.code ]]</para></td>
<td>
<para style="terp_default_9">Taxes:</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(o.amount_tax) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ o.currency_id.code ]]</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="63.0,58.0,26.0" style="Table_Total_Include_Taxes">
<para style="terp_default_2">
<font color="white"> </font>
</para>
<blockTable colWidths="63.0,61.0,23.0" style="Table_Total_Include_Taxes">
<tr>
<td><para style="terp_default_Bold_9">Total:</para></td>
<td><para style="terp_default_Right_9">[[ formatLang(o.amount_total) ]]</para></td>
<td><para style="terp_default_Right_9">[[ o.currency_id.code ]]</para></td>
<td>
<para style="terp_default_Bold_9">Total:</para>
</td>
<td>
<para style="terp_default_Right_9">[[ formatLang(o.amount_total) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ o.currency_id.code ]]</para>
</td>
</tr>
</blockTable>
</td>
</tr>
</blockTable>
<blockTable colWidths="530.0" style="Table_Main_Table">
<blockTable colWidths="530.0" style="Table4">
<tr>
<td>
<blockTable colWidths="54.0,80.0,67.0" style="Table_Tax_Header">
<blockTable colWidths="149.0,55.0,52.0" style="Table6">
<tr>
<td><para style="terp_tblheader_Details_Centre">Tax</para></td>
<td><para style="terp_tblheader_Details_Right">Base</para></td>
<td><para style="terp_tblheader_Details_Right">Amount</para></td>
<td>
<para style="terp_tblheader_Details">Tax</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Base</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Amount</para>
</td>
</tr>
</blockTable>
<para style="terp_default_2">
<font color="white"> </font>
</para>
</td>
</tr>
<tr>
<td>
<para style="terp_default_2">[[ repeatIn(o.tax_line,'t') ]]</para>
<blockTable colWidths="149.0,55.0,52.0" style="Table5">
<tr>
<td>
<para style="terp_default_8">[[ t.name ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ formatLang(t.base) ]]</para>
</td>
<td>
<para style="terp_default_Right_8">[[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount) ]]</para>
</td>
</tr>
</blockTable>
</td>
</tr>
<tr>
<td>
<para style="terp_default_8">[[ repeatIn(o.tax_line,'t') ]]</para>
<blockTable colWidths="53.0,80.0,65.0" style="Table_Tax_Content">
<tr>
<td><para style="terp_default_Centre_8">[[ t.name ]] </para></td>
<td><para style="terp_default_Right_8">[[ formatLang(t.base) ]]</para></td>
<td><para style="terp_default_Right_8">[[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]][[ formatLang(t.amount) ]]</para></td>
</tr>
</blockTable>
<para style="terp_default_2">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="530.0" style="Table3">
<tr>
<td>
<blockTable colWidths="53.0,60.0,65.0" style="Table_Table_Border_White">
<tr>
<td><para style="terp_default_2"><font color="white"> </font></para></td>
<td><para style="terp_default_2"><font color="white"> </font></para></td>
<td><para style="terp_default_2"><font color="white"> </font></para></td>
</tr>
</blockTable>
<para style="terp_default_9">[[ format(o.comment or '') or removeParentNode('blockTable') ]]</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="180.0,350.0" style="Table_Final_Border">
<blockTable colWidths="530.0" style="Table2">
<tr>
<td><para style="terp_default_2"><font color="white"> </font></para></td>
<td><para style="terp_default_2"><font color="white"> </font></para></td>
<td>
<para style="terp_default_9">[[ format((o.payment_term and o.payment_term.note) or '') or removeParentNode('blockTable') ]]</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="530.0" style="Table_Coment_Payment_Term">
<tr>
<td><para style="terp_default_9">[[ format(o.comment or removeParentNode('blockTable')) ]]</para></td>
</tr>
</blockTable>
<para style="terp_default_2">
<font color="white"> </font>
</para>
<blockTable colWidths="530.0" style="Table_Payment_Terms">
<tr>
<td><para style="terp_default_9">[[ format((o.payment_term and o.payment_term.note) or removeParentNode('blockTable')) ]]</para></td>
</tr>
</blockTable>
<para style="terp_default_2">
<font color="white"> </font>
</para>
<blockTable colWidths="128.0,402.0" style="Standard_Outline">
<blockTable colWidths="128.0,402.0" style="Table1">
<tr>
<td>
<para style="terp_default_Bold_9">Fiscal Position Remark :</para>
</td>
<td>
<para style="terp_default_9">[[ format(o.fiscal_position and o.fiscal_position.note or removeParentNode('blockTable')) ]]</para>
<para style="terp_default_9">[[ format((o.fiscal_position and o.fiscal_position.note) or '') or removeParentNode('blockTable') ]]</para>
</td>
</tr>
</blockTable>
<para style="terp_default_2">
<font color="white"> </font>
</para>
</tr>
</blockTable>
<para style="terp_default_2">
<font color="white"> </font>
</para>
</story>
</document>
+25 -24
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.6\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-04-10 04:39+0000\n"
"Last-Translator: digitalsatori <Unknown>\n"
"PO-Revision-Date: 2010-07-13 03:49+0000\n"
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:10+0000\n"
"X-Launchpad-Export-Date: 2010-07-13 03:49+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_analytic_analysis
@@ -21,7 +21,7 @@ msgstr ""
msgid ""
"Number of hours that can be invoiced plus those that already have been "
"invoiced."
msgstr "小时数能加在已开的发票上"
msgstr ""
#. module: account_analytic_analysis
#: model:ir.model,name:account_analytic_analysis.model_account_analytic_analysis_summary_user
@@ -31,12 +31,12 @@ msgstr "用户的小时数合计"
#. module: account_analytic_analysis
#: field:account.analytic.account,last_invoice_date:0
msgid "Last Invoice Date"
msgstr "最近开票日期"
msgstr ""
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_ca:0
msgid "Computed using the formula: Max Invoice Price - Invoiced Amount."
msgstr "计算公式为:最高发票价格 - 发票金额"
msgstr "计算公式为:最高发票价格 - 已开票金额"
#. module: account_analytic_analysis
#: help:account.analytic.account,remaining_hours:0
@@ -44,25 +44,26 @@ msgid "Computed using the formula: Maximum Quantity - Hours Tot."
msgstr "计算公式为:最大数量 - 小时合计"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_all
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_all
msgid "All Analytic Accounts"
msgstr "所有辅助核算项目"
msgstr "所有辅助核算项"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_managed_open
#: model:ir.ui.menu,name:account_analytic_analysis.menu_analytic_account_to_valid_open
msgid "My Current Accounts"
msgstr "我的当前科目"
msgstr "我的当前项"
#. module: account_analytic_analysis
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "描述视图结构的XML文件无效"
msgstr "无效XML视图结构!"
#. module: account_analytic_analysis
#: help:account.analytic.account,last_invoice_date:0
msgid "Date of the last invoice created for this analytic account."
msgstr "这辅助核算项目的最近开票日期"
msgstr "这辅助核算项的最近开票日期"
#. module: account_analytic_analysis
#: field:account.analytic.account,ca_theorical:0
@@ -83,13 +84,13 @@ msgstr "计算公式:理论收入 - 总费用"
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr "对象名必须要以X_开头并且不能含有特殊字符!"
msgstr "对象名称必须以“x_”开头且不能包含任何特殊字符!"
#. module: account_analytic_analysis
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_new
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_new
msgid "New Analytic Account"
msgstr "新的分析科目"
msgstr "新辅助核算项"
#. module: account_analytic_analysis
#: field:account.analytic.account,theorical_margin:0
@@ -105,29 +106,29 @@ msgstr "实际利润(%)"
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_all_open
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_all_open
msgid "Current Analytic Accounts"
msgstr "当前分析科目"
msgstr "当前辅助核算项"
#. module: account_analytic_analysis
#: help:account.analytic.account,last_worked_date:0
msgid "Date of the latest work done on this account."
msgstr "这科目的最近的工作完成日期"
msgstr "这项的最近的工作完成日期"
#. module: account_analytic_analysis
#: help:account.analytic.account,last_worked_invoiced_date:0
msgid ""
"If invoice from the costs, this is the date of the latest work or cost that "
"have been invoiced."
msgstr "如果是成本发票,最近工作或成本的时间已开出的发票"
msgstr "如果发票来自费用, 这是最近工作日期或已开票的费用"
#. module: account_analytic_analysis
#: model:ir.ui.menu,name:account_analytic_analysis.menu_invoicing
msgid "Invoicing"
msgstr "计价折扣"
msgstr "开发票"
#. module: account_analytic_analysis
#: field:account.analytic.account,last_worked_date:0
msgid "Date of Last Cost/Work"
msgstr "最近的成本/工作 日期"
msgstr "费用或工作的最近日期"
#. module: account_analytic_analysis
#: field:account.analytic.account,total_cost:0
@@ -139,7 +140,7 @@ msgstr "总成本"
msgid ""
"Number of hours you spent on the analytic account (from timesheet). It "
"computes on all journal of type 'general'."
msgstr "你的小时数在辅助核算项目(根据时间表).它计算所有普通分类帐."
msgstr "在辅助核算项你花费的小时数(根据时间表). 它在所有类型为普通的记录集合里计算."
#. module: account_analytic_analysis
#: field:account.analytic.account,remaining_hours:0
@@ -190,8 +191,8 @@ msgid ""
"important data for project manager of services companies.\n"
"Add menu to show relevant information for each manager."
msgstr ""
"修改核算到显示服务公司的项目管理主要时间\n"
"添加菜单显示每个管理的有关信息"
"修改辅助核算项到显示视图, 服务公司项目经理的重要数据\n"
"添加菜单显示每个管理者的相关信息"
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_qtt_non_invoiced:0
@@ -206,12 +207,12 @@ msgstr "总小时"
#. module: account_analytic_analysis
#: model:ir.ui.menu,name:account_analytic_analysis.menu_account
msgid "Analytic Accounts"
msgstr "核算项目"
msgstr "辅助核算项"
#. module: account_analytic_analysis
#: model:ir.module.module,shortdesc:account_analytic_analysis.module_meta_information
msgid "report_account_analytic"
msgstr "核算项目报表"
msgstr "辅助核算项报表"
#. module: account_analytic_analysis
#: field:account.analytic.account,ca_invoiced:0
@@ -226,7 +227,7 @@ msgstr "财务项目管理"
#. module: account_analytic_analysis
#: field:account.analytic.account,last_worked_invoiced_date:0
msgid "Date of Last Invoiced Cost"
msgstr "最近的发票成本日期"
msgstr "最近的已发票日期"
#. module: account_analytic_analysis
#: field:account.analytic.account,ca_to_invoice:0
@@ -237,7 +238,7 @@ msgstr "未开票金额"
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_all_pending
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_all_pending
msgid "Pending Analytic Accounts"
msgstr "未决的辅助核算项目"
msgstr "未决的辅助核算项"
#. module: account_analytic_analysis
#: field:account.analytic.account,hours_qtt_invoiced:0
+1
View File
@@ -53,6 +53,7 @@
'account_followup_data.xml'
],
'demo_xml': ['account_followup_demo.xml'],
'test': ['test/account_followup.yml'],
'installable': True,
'active': False,
'certificate': '0072481076453',
@@ -1,8 +1,5 @@
-
In order to test account_payment in OpenERP I create a new record Type
-
-
Creating a payment.type record
In order to test account_payment in OpenERP I create a new record Type.
-
!record {model: payment.type, id: payment_type_t0}:
code: T0
@@ -127,19 +124,3 @@
- state == 'done'
@@ -90,7 +90,6 @@ class wiz_auc_lots_buyer_map(osv.osv_memory):
for rec in recs:
if rec.ach_login==datas['ach_login']:
lots_obj.write(cr, uid, [rec.id], {'ach_uid': datas['ach_uid']}, context=context)
cr.commit()
return {}
def fields_view_get(self, cr, uid, view_id=None, view_type='form',
@@ -73,7 +73,6 @@ class auction_lots_make_invoice(osv.osv_memory):
result = mod_obj._get_id(cr, uid, 'account', 'view_account_invoice_filter')
id = mod_obj.read(cr, uid, result, ['res_id'])
lots_ids = order_obj.seller_trans_create(cr, uid, context['active_ids'], context)
cr.commit()
return {
'domain': "[('id','in', ["+','.join(map(str, lots_ids))+"])]",
'name': 'Seller invoices',
@@ -73,7 +73,6 @@ class auction_lots_make_invoice_buyer(osv.osv_memory):
for lot in lots:
up_auction = order_obj.write(cr, uid, [lot.id], {'ach_uid': data['buyer_id']})
lots_ids = order_obj.lots_invoice(cr, uid, context['active_ids'], context, data['number'])
cr.commit()
return {
'domain': "[('id','in', ["+','.join(map(str, lots_ids))+"])]",
'name': 'Buyer invoices',
+2 -2
View File
@@ -105,8 +105,8 @@ the rule to mark CC(mail to any other person defined in actions)."),
'act_mail_to_email': fields.char('Mail to these Emails', size=128, \
help="Email-id of the persons whom mail is to be sent"),
'act_mail_body': fields.text('Mail body', help="Content of mail"),
'regex_name': fields.char('Regex on Resource Name', size=128, help="Regular expression for mathching name of the resource\
\ne.g.: urgent.* will search for records having name starting with urgent\
'regex_name': fields.char('Regex on Resource Name', size=128, help="Regular expression for matching name of the resource\
\ne.g.: 'urgent.*' will search for records having name starting with the string 'urgent'\
\nNote: This is case sensitive search."),
'server_action_id': fields.many2one('ir.actions.server', 'Server Action', help="Describes the action name.\neg:on which object which action to be taken on basis of which condition"),
'filter_id':fields.many2one('ir.filters', 'Filter', required=False),
-2
View File
@@ -690,7 +690,6 @@ true, it will allow you to hide the event alarm information without removing it.
cr.execute('Update %s set base_calendar_alarm_id=%s, alarm_id=%s \
where id=%s' % (model_obj._table, \
alarm_id, basic_alarm.id, data.id))
cr.commit()
return True
def do_alarm_unlink(self, cr, uid, ids, model, context=None):
@@ -714,7 +713,6 @@ true, it will allow you to hide the event alarm information without removing it.
alarm_obj.unlink(cr, uid, alarm_ids)
cr.execute('Update %s set base_calendar_alarm_id=NULL, alarm_id=NULL\
where id=%s' % (model_obj._table, datas.id))
cr.commit()
return True
res_alarm()
+1 -1
View File
@@ -55,7 +55,7 @@
Now I will check that the new job is assigned properly to contact or not
-
!assert {model: res.partner.contact, id: res_partner_contact_williams0}:
- len(job_ids) > 2
- len(job_ids) >= 2
- |
In order to check contacts working at several addresses for different partners
I will create contact with 2 different addresses
+1 -1
View File
@@ -48,7 +48,7 @@ class base_setup_config_choice(osv.osv_memory):
user_ids = user_obj.search(cr, uid, [])
users = user_obj.browse(cr, uid, user_ids)
user_str = '\n'.join(map(lambda x: ' - %s: %s / %s' % (x.name, x.login, x.password), users))
return _('The following users have been installed on your database: \n')+ user_str
return _('The following users have been installed : \n')+ user_str
_columns = {
'installed_users':fields.text('Installed Users', readonly=True),
+1 -1
View File
@@ -16,7 +16,7 @@
<separator string="" position="vertical" colspan="1" rowspan="8"/>
<group colspan="4" width="400">
<separator string="Installation Done" colspan="4"/>
<label align="0.0" string="Your new database is now fully installed." colspan="4"/>
<label align="0.0" string="Your database is now created." colspan="4"/>
<field name="installed_users" nolabel= "1" colspan="4"/>
</group>
</group>
+8 -8
View File
@@ -11,7 +11,7 @@
<attribute name="string">Main Company Setup</attribute>
</form>
<xpath expr="//label[@string='description']" position="attributes">
<attribute name="string">Information of your company will be used to custiomise your documents like Invoices, Sale Orders,...</attribute>
<attribute name="string">Information of your company will be used to custiomise your documents like Invoices, Sale Orders and many more.</attribute>
</xpath>
<xpath expr='//separator[@string="title"]' position='attributes'>
<attribute name='string'>Configure Your Company</attribute>
@@ -24,16 +24,16 @@
<group colspan="5">
<group colspan="2">
<field name="company_id" invisible="1"/>
<field name="name" required="True"/><field name="account_no"/>
<field name="currency" widget="selection"/><field name="street"/>
<field name="street2"/>
<field name="country_id"/>
<field name="name" required="True"/><field name="website"/>
<field name="street"/><field name="street2"/>
<field name="zip"/>
<field name="state_id"/>
<field name="city"/>
<field name="email"/>
<field name="country_id"/>
<field name="state_id"/>
<field name="phone"/>
<field name="website"/>
<field name="email"/>
<field name="account_no"/>
<field name="currency" widget="selection"/>
</group>
<newline/>
<!-- <group colspan="2" groups="base.group_extended">-->
+28 -6
View File
@@ -4,9 +4,28 @@
<menuitem icon="terp-graph" id="base.reporting_menu"
name="Reporting" sequence="30" />
<menuitem icon="terp-graph" id="menu_dasboard"
name="Dashboard" sequence="30" />
<!--Board Note Tree View -->
name="Dashboard" sequence="30" />
<!--Board Note Search View -->
<record id="view_board_note_search" model="ir.ui.view">
<field name="name">board.note.search</field>
<field name="model">board.note</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Notes">
<group col="10" colspan="4">
<field name="name" string="Subject"/>
<field name="type" string="Note Type"/>
<field name="date" string="Date"/>
</group>
<newline/>
<group expand="0" colspan="4" string="Group By...">
<filter string="Author" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
</group>
</search>
</field>
</record>
<!--Board Note Tree View -->
<record id="view_board_note_tree" model="ir.ui.view">
<field name="name">board.note.tree</field>
@@ -15,10 +34,11 @@
<field name="arch" type="xml">
<tree string="Notes">
<field name="name"/>
<field name="user_id"/>
</tree>
</field>
</record>
<!--Board Note Form View -->
<record id="view_board_note_form" model="ir.ui.view">
@@ -31,7 +51,8 @@
<field name="type" select="1" required="1"/>
<field name="user_id" select="1"/>
<field name="date" select="1"/>
<field colspan="4" name="note"/>
<separator string="Notes" colspan="4"/>
<field colspan="4" name="note" nolabel="1"/>
</form>
</field>
</record>
@@ -43,6 +64,7 @@
<field name="res_model">board.note</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree</field>
<field name="search_view_id" ref="view_board_note_search"/>
</record>
<!-- Board Tree View -->
@@ -72,7 +94,7 @@
name="%(action_board_menu_create)d"
string="Create Menu" type="action"
icon="gtk-justify-fill" />
<field colspan="4" name="line_ids">
<field colspan="4" name="line_ids" nolabel="1">
<tree string="Dashboard View">
<field name="name"/>
<field name="sequence"/>
+9 -5
View File
@@ -124,7 +124,7 @@ class crm_case(object):
stage_pool = self.pool.get('crm.case.stage')
for case in self.browse(cr, uid, ids, context):
if section in s:
st = case.stage_id.id or False
st = not context.get('force_domain', False) and case.stage_id.id or False
if st in s[section]:
data = {'stage_id': s[section][st]}
stage = s[section][st]
@@ -141,8 +141,12 @@ class crm_case(object):
if not context:
context = {}
stage_obj = self.pool.get('crm.case.stage')
sid = stage_obj.search(cr, uid, \
[('object_id.model', '=', self._name)], context=context)
tmp = self.read(cr, uid, ids, ['section_id'], context)[0]['section_id']
section_id = tmp and tmp[0] or False
domain = [('object_id.model', '=', self._name), ('section_id', '=', section_id)]
if 'force_domain' in context and context['force_domain']:
domain += context['force_domain']
sid = stage_obj.search(cr, uid, domain, context=context)
s = {}
previous = {}
section = self._name
@@ -168,7 +172,7 @@ class crm_case(object):
stage_pool = self.pool.get('crm.case.stage')
for case in self.browse(cr, uid, ids, context):
if section in s:
st = case.stage_id.id or False
st = not context.get('force_domain', False) and case.stage_id.id or False
s[section] = dict([(v, k) for (k, v) in s[section].iteritems()])
if st in s[section]:
data = {'stage_id': s[section][st]}
@@ -440,7 +444,7 @@ class crm_case_section(osv.osv):
'active': fields.boolean('Active', help="If the active field is set to \
true, it will allow you to hide the sales team without removing it."),
'allow_unlink': fields.boolean('Allow Delete', help="Allows to delete non draft cases"),
'change_responsible': fields.boolean('Change Responsible', help="Set responsible of this Sales team on escalation to this team"),
'change_responsible': fields.boolean('Change Responsible', help="Thick this box if you want that on escalation, the responsible of this sale team automatically becomes responsible of the lead/opportunity escaladed"),
'user_id': fields.many2one('res.users', 'Responsible User'),
'member_ids':fields.many2many('res.users', 'sale_member_rel', 'section_id', 'member_id', 'Team Members'),
'reply_to': fields.char('Reply-To', size=64, help="The email address put \
+11 -3
View File
@@ -177,10 +177,18 @@ and users"),
@param ids: List of case's Ids
@param *args: Give Tuple Value
"""
old_state = self.read(cr, uid, ids, ['state'])[0]['state']
res = super(crm_lead, self).case_open(cr, uid, ids, *args)
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')})
if old_state == 'draft':
stage_id = super(crm_lead, self).stage_next(cr, uid, ids, *args)
if not stage_id:
raise osv.except_osv(_('Warning !'), _('There is no stage defined for this Sale Team.'))
value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
value.update({'date_open': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
self.write(cr, uid, ids, value)
for (id, name) in self.name_get(cr, uid, ids):
message = _('Lead ') + " '" + name + "' "+ _("is Open.")
message = _('The Lead') + " '" + name + "' "+ _("has been written as Open.")
self.log(cr, uid, id, message)
return res
@@ -195,7 +203,7 @@ and users"),
res = super(crm_lead, self).case_close(cr, uid, ids, args)
self.write(cr, uid, ids, {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
for (id, name) in self.name_get(cr, uid, ids):
message = _('Lead ') + " '" + name + "' "+ _("is Closed.")
message = _('The Lead') + " '" + name + "' "+ _("has been written as Closed.")
self.log(cr, uid, id, message)
return res
+1 -1
View File
@@ -309,7 +309,7 @@
context="{'invisible_section': False}">
<filter icon="terp-personal+"
context="{'invisible_section': False}"
domain="[('section_id.user_id','=',uid)]"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
help="My Sales Team"/>
<filter icon="terp-personal+"
context="{'invisible_section': False}"
+1 -1
View File
@@ -294,7 +294,7 @@
<field name="partner_id" select="1" />
<field name="section_id" select="1" widget="selection">
<filter icon="terp-personal+"
domain="[('section_id','=',context.get('section_id',False))]"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
help="My Sale Team" />
</field>
<field name="user_id" select="1"/>
+44 -7
View File
@@ -64,9 +64,36 @@ class crm_opportunity(osv.osv):
@param *args: Tuple Value for additional Params
"""
res = super(crm_opportunity, self).case_close(cr, uid, ids, args)
self.write(cr, uid, ids, {'probability' : 100.0, 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
stage_id = super(crm_opportunity, self).stage_next(cr, uid, ids, context={'force_domain': [('probability', '=', 100)]})
if not stage_id:
raise osv.except_osv(_('Warning !'), _('There is no stage for won oppportunities defined for this Sale Team.'))
value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
value.update({'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
self.write(cr, uid, ids, value)
for (id, name) in self.name_get(cr, uid, ids):
message = _('Opportunity ') + " '" + name + "' "+ _("is Won.")
message = _('The Opportunity') + " '" + name + "' "+ _("has been written as Won.")
self.log(cr, uid, id, message)
return res
def case_mark_lost(self, cr, uid, ids, *args):
"""Mark the case as lost: state = done and probability = 0%
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of case Ids
@param *args: Tuple Value for additional Params
"""
res = super(crm_opportunity, self).case_close(cr, uid, ids, args)
stage_id = super(crm_opportunity, self).stage_next(cr, uid, ids, context={'force_domain': [('probability', '=', 0)]})
if not stage_id:
raise osv.except_osv(_('Warning !'), _('There is no stage for lost oppportunities defined for this Sale Team.'))
value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
value.update({'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
res = self.write(cr, uid, ids, value)
for (id, name) in self.name_get(cr, uid, ids):
message = _('The Opportunity') + " '" + name + "' "+ _("has been written as Lost.")
self.log(cr, uid, id, message)
return res
@@ -80,13 +107,23 @@ class crm_opportunity(osv.osv):
"""
res = super(crm_opportunity, self).case_cancel(cr, uid, ids, args)
self.write(cr, uid, ids, {'probability' : 0.0})
for (id, name) in self.name_get(cr, uid, ids):
message = _('Opportunity ') + " '" + name + "' "+ _("is Lost.")
self.log(cr, uid, id, message)
return res
def case_reset(self, cr, uid, ids, *args):
"""Overrides reset as draft in order to set the stage field as empty
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of case Ids
@param *args: Tuple Value for additional Params
"""
res = super(crm_opportunity, self).case_reset(cr, uid, ids, *args)
self.write(cr, uid, ids, {'stage_id': False})
return True
def case_open(self, cr, uid, ids, *args):
"""Overrides cancel for crm_case for setting Open Date
"""Overrides open for crm_case for setting Open Date
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
+16 -13
View File
@@ -65,8 +65,11 @@
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
<group col="8" colspan="4">
<group col="10" colspan="4">
<field name="state"/>
<button name="case_reset" string="Reset to New"
states="done,cancel" type="object"
icon="gtk-convert" />
<button name="case_open" string="Open"
states="draft,pending" type="object"
icon="gtk-go-forward" />
@@ -74,18 +77,18 @@
states="draft,open" type="object"
icon="gtk-media-pause" />
<button name="case_escalate" string="Escalate"
states="open,draft,pending" type="object"
states="open,pending" type="object"
groups="base.group_extended"
icon="gtk-go-up" />
<button name="case_cancel" string="Mark Lost"
<button name="case_cancel" string="Cancel"
states="draft,open,pending" type="object"
icon="gtk-close" />
<button name="case_mark_lost" string="Mark Lost"
states="open,pending" type="object"
icon="gtk-cancel" />
<button name="case_close" string="Mark Won"
states="open,draft,pending" type="object"
states="open,pending" type="object"
icon="gtk-apply" />
<button name="case_reset" string="Reset to New"
states="done,cancel" type="object"
icon="gtk-convert" />
</group>
</page>
<page string="Lead">
@@ -224,15 +227,15 @@
<button name="case_open" string="Open"
states="draft,pending" type="object"
icon="gtk-go-forward" />
<button name="case_close" string="Won"
states="open,draft,pending" type="object"
icon="gtk-apply" />
<button name="case_pending" string="Pending"
states="open,draft" type="object"
icon="gtk-media-pause" />
<button name="case_cancel" string="Lost"
states="draft,open,pending" type="object"
<button name="case_mark_lost" string="Lost"
states="open,pending" type="object"
icon="gtk-cancel" />
<button name="case_close" string="Won"
states="open,draft,pending" type="object"
icon="gtk-apply" />
</tree>
</field>
</record>
@@ -291,7 +294,7 @@
context="{'invisible_section': False}"
widget="selection">
<filter icon="terp-personal+"
domain="[('section_id.user_id','=',uid)]"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
context="{'invisible_section': False}"
help="My Sales Team" />
<filter icon="terp-personal+"
+1 -1
View File
@@ -273,7 +273,7 @@
<field name="section_id"
select="1" widget="selection" string="Sales Team">
<filter icon="terp-personal+"
domain="[('section_id','=',context.get('section_id',False))]"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
help="My Sale Team" />
</field>
<newline/>
@@ -11,9 +11,7 @@
<field name="name"/>
<field name="menu_parent_id"/>
<field name="section_id"/>
<label string="This wizard will create all sub-menus, within the selected menu." align="0.0" colspan="4"/>
<label string="You may want to create a new parent menu to put all the created menus in." align="0.0" colspan="4"/>
<separator string="Select Views (Empty for default)" colspan="4"/>
<separator string="Select Views (Empty for Default)" colspan="4"/>
<field name="view_form"/>
<field name="view_tree"/>
<field name="view_calendar"/>
@@ -45,42 +45,6 @@ class crm_claim_report(osv.osv):
_name = "crm.claim.report"
_auto = False
_description = "CRM Claim Report"
def _get_data(self, cr, uid, ids, field_name, arg, context={}):
""" @param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of case and section Data’s IDs
@param context: A standard dictionary for contextual values """
res = {}
state_perc = 0.0
avg_ans = 0.0
for case in self.browse(cr, uid, ids, context):
if field_name != 'avg_answers':
state = field_name[5:]
cr.execute("select count(*) from crm_opportunity where \
section_id =%s and state='%s'"%(case.section_id.id, state))
state_cases = cr.fetchone()[0]
perc_state = (state_cases / float(case.nbr)) * 100
res[case.id] = perc_state
else:
model_name = self._name.split('report.')
if len(model_name) < 2:
res[case.id] = 0.0
else:
model_name = model_name[1]
cr.execute("select count(*) from crm_case_log l, ir_model m \
where l.model_id=m.id and m.model = '%s'" , model_name)
logs = cr.fetchone()[0]
avg_ans = logs / case.nbr
res[case.id] = avg_ans
return res
_columns = {
'name': fields.char('Year', size=64, required=False, readonly=True),
@@ -88,9 +52,6 @@ class crm_claim_report(osv.osv):
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'avg_answers': fields.function(_get_data, string='Avg. Answers', method=True, type="integer"),
'perc_done': fields.function(_get_data, string='%Done', method=True, type="float"),
'perc_cancel': fields.function(_get_data, string='%Cancel', method=True, type="float"),
'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \
@@ -137,9 +98,6 @@ class crm_claim_report(osv.osv):
c.company_id,
c.categ_id,
count(*) as nbr,
0 as avg_answers,
0.0 as perc_done,
0.0 as perc_cancel,
c.priority as priority,
c.type_id as type_id,
date_trunc('day',c.create_date) as create_date,
@@ -291,7 +291,7 @@
</field>
<field name="section_id" select="1" widget="selection" string="Sales Team">
<filter icon="terp-personal+"
domain="[('section_id','=',context.get('section_id',False))]"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
help="My section" />
</field>
</group>
@@ -36,42 +36,6 @@ class crm_fundraising_report(osv.osv):
_name = "crm.fundraising.report"
_auto = False
_description = "CRM Fundraising Report"
def _get_data(self, cr, uid, ids, field_name, arg, context={}):
""" @param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of case and section Data’s IDs
@param context: A standard dictionary for contextual values """
res = {}
state_perc = 0.0
avg_ans = 0.0
for case in self.browse(cr, uid, ids, context):
if field_name != 'avg_answers':
state = field_name[5:]
cr.execute("select count(*) from crm_opportunity where \
section_id =%s and state='%s'"%(case.section_id.id, state))
state_cases = cr.fetchone()[0]
perc_state = (state_cases / float(case.nbr)) * 100
res[case.id] = perc_state
else:
model_name = self._name.split('report.')
if len(model_name) < 2:
res[case.id] = 0.0
else:
model_name = model_name[1]
cr.execute("select count(*) from crm_case_log l, ir_model m \
where l.model_id=m.id and m.model = '%s'" , model_name)
logs = cr.fetchone()[0]
avg_ans = logs / case.nbr
res[case.id] = avg_ans
return res
_columns = {
'name': fields.char('Year', size=64, required=False, readonly=True),
@@ -79,9 +43,6 @@ class crm_fundraising_report(osv.osv):
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'avg_answers': fields.function(_get_data, string='Avg. Answers', method=True, type="integer"),
'perc_done': fields.function(_get_data, string='%Done', method=True, type="float"),
'perc_cancel': fields.function(_get_data, string='%Cancel', method=True, type="float"),
'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \
@@ -123,9 +84,6 @@ class crm_fundraising_report(osv.osv):
c.company_id,
c.partner_id,
count(*) as nbr,
0 as avg_answers,
0.0 as perc_done,
0.0 as perc_cancel,
date_trunc('day',c.create_date) as create_date,
sum(planned_revenue) as amount_revenue,
sum(planned_revenue*probability)::decimal(16,2) as amount_revenue_prob,
+58 -3
View File
@@ -1,6 +1,61 @@
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<data noupdate="1">
<record id="crm_helpdesk_wheretodownloadopenerp0" model="crm.helpdesk">
<field model="res.partner.canal" name="canal_id" search="[('name', '=', u'E-mail')]"/>
<field name="som" ref="base.som_normal"/>
<field eval="1" name="active"/>
<field name="user_id" ref="base.user_root"/>
<field name="company_id" ref="base.main_company"/>
<field name="priority">3</field>
<field name="state">draft</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="date">2010-07-04 11:10:36</field>
<field name="name">Download old version of OpenERP? </field>
<field eval="&quot;Is there any link to download old versions of OpenERP?&quot;" name="description"/>
</record>
</data>
</openerp>
<record id="crm_helpdesk_cannotabletoconnecttoserver0" model="crm.helpdesk">
<field model="res.partner.canal" name="canal_id" search="[('name', '=', u'website')]"/>
<field name="som" ref="base.som_fury"/>
<field eval="1" name="active"/>
<field name="user_id" ref="base.user_demo"/>
<field name="company_id" ref="base.main_company"/>
<field name="priority">3</field>
<field name="state">draft</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="date">2010-07-12 11:12:09</field>
<field name="name">Can not able to connect to Server</field>
<field eval="&quot;I am not able to connect Server, Can anyone help?&quot;" name="description"/>
</record>
<record id="crm_helpdesk_documentationforcrm0" model="crm.helpdesk">
<field model="res.partner.canal" name="canal_id" search="[('name', '=', u'phone')]"/>
<field name="som" ref="base.som_happy"/>
<field eval="1" name="active"/>
<field name="user_id" ref="base.user_root"/>
<field name="company_id" ref="base.main_company"/>
<field name="priority">2</field>
<field name="state">draft</field>
<field name="section_id" ref="crm.section_sales_department"/>
<field name="date">2010-07-12 11:13:10</field>
<field name="name">Documentation for CRM?</field>
<field eval="&quot;Can anyone give link of document for CRM&quot;" name="description"/>
</record>
<record id="crm_helpdesk_howtocreateanewmodule0" model="crm.helpdesk">
<field model="res.partner.canal" name="canal_id" search="[('name', '=', u'E-mail')]"/>
<field name="partner_address_id" ref="base.res_partner_address_9"/>
<field name="som" ref="base.som_normal"/>
<field eval="1" name="active"/>
<field name="partner_id" ref="base.res_partner_2"/>
<field name="user_id" ref="base.user_root"/>
<field name="company_id" ref="base.main_company"/>
<field name="priority">3</field>
<field name="state">draft</field>
<field name="date">2010-07-12 11:15:17</field>
<field name="name">How to create a new module</field>
<field eval="&quot;How can I create new module in OpenERP?&quot;" name="description"/>
</record>
</data>
</openerp>
+2 -3
View File
@@ -66,8 +66,7 @@
</group>
<separator colspan="4" string="Notes"/>
<field name="description" colspan="4"
nolabel="1" widget="text_tag" readonly="1" />
<field name="description" colspan="4" nolabel="1" />
<separator colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="1"/>
@@ -250,7 +249,7 @@
<field name="user_id" select="1" widget="selection"/>
<field name="section_id" select="1" widget="selection" string="Sales Team">
<filter icon="terp-personal+"
domain="[('section_id','=',context.get('section_id',False))]"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
help="My section" />
</field>
<newline/>
@@ -38,51 +38,12 @@ class crm_helpdesk_report(osv.osv):
_description = "Helpdesk report after Sales Services"
_auto = False
def _get_data(self, cr, uid, ids, field_name, arg, context={}):
""" @param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of case and section Data’s IDs
@param context: A standard dictionary for contextual values """
res = {}
state_perc = 0.0
avg_ans = 0.0
for case in self.browse(cr, uid, ids, context):
if field_name != 'avg_answers':
state = field_name[5:]
cr.execute("select count(*) from crm_opportunity where \
section_id =%s and state='%s'"%(case.section_id.id, state))
state_cases = cr.fetchone()[0]
perc_state = (state_cases / float(case.nbr)) * 100
res[case.id] = perc_state
else:
model_name = self._name.split('report.')
if len(model_name) < 2:
res[case.id] = 0.0
else:
model_name = model_name[1]
cr.execute("select count(*) from crm_case_log l, ir_model m \
where l.model_id=m.id and m.model = '%s'" , model_name)
logs = cr.fetchone()[0]
avg_ans = logs / case.nbr
res[case.id] = avg_ans
return res
_columns = {
'name': fields.char('Year', size=64, required=False, readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
'nbr': fields.integer('# of Cases', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
'avg_answers': fields.function(_get_data, string='Avg. Answers', method=True, type="integer"),
'perc_done': fields.function(_get_data, string='%Done', method=True, type="float"),
'perc_cancel': fields.function(_get_data, string='%Cancel', method=True, type="float"),
'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \
@@ -122,9 +83,6 @@ class crm_helpdesk_report(osv.osv):
c.priority,
c.date_deadline,
count(*) as nbr,
0 as avg_answers,
0.0 as perc_done,
0.0 as perc_cancel,
to_char(avg(date_closed-c.create_date), 'DD"d" HH24:MI:SS') as delay_close
from
crm_helpdesk c
+1
View File
@@ -22,6 +22,7 @@
import delivery
import partner
import wizard
import report
import sale
import stock
+1
View File
@@ -35,6 +35,7 @@
'update_xml': [
'security/ir.model.access.csv',
'wizard/delivery_sale_order_view.xml',
'delivery_report.xml',
'delivery_view.xml',
'partner_view.xml'
],
@@ -6,7 +6,7 @@
id="report_shipping"
model="stock.picking"
name="sale.shipping"
rml="sale_delivery_report/report/shipping.rml"
rml="delivery/report/shipping.rml"
string="Delivery order"/>
</data>
@@ -118,8 +118,8 @@ class email_template_send_wizard(osv.osv_memory):
'full_success': lambda *a: False
}
def fields_get(self, cr, uid, fields=None, context=None, read_access=True):
result = super(email_template_send_wizard, self).fields_get(cr, uid, fields, context, read_access)
def fields_get(self, cr, uid, fields=None, context=None, write_access=True):
result = super(email_template_send_wizard, self).fields_get(cr, uid, fields, context, write_access)
if 'attachment_ids' in result and 'src_model' in context:
result['attachment_ids']['domain'] = [('res_model','=',context['src_model']),('res_id','=',context['active_id'])]
return result
+105 -39
View File
@@ -53,7 +53,7 @@ class event_event(osv.osv):
def copy(self, cr, uid, id, default=None, context=None):
""" Copy record of Given id
@param id: Id of Event Registration type record.
@param id: Id of Event record.
@param context: A standard dictionary for contextual values
"""
if not default:
@@ -65,7 +65,13 @@ class event_event(osv.osv):
return super(event_event, self).copy(cr, uid, id, default=default, context=context)
def onchange_product(self, cr, uid, ids, product_id):
"""This function returns value of product's unit price based on product id.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Event IDs
@param product_id: Product's id
"""
if not product_id:
return {'value': {'unit_price': False}}
else:
@@ -82,6 +88,13 @@ class event_event(osv.osv):
return self.write(cr, uid, ids, {'state': 'done'}, context=context)
def button_confirm(self, cr, uid, ids, context=None):
"""This Funtion send reminder who had already confirmed their event registration.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Event IDs
@param return: True
"""
register_pool = self.pool.get('event.registration')
for event in self.browse(cr, uid, ids, context=context):
if event.mail_auto_confirm:
@@ -95,14 +108,12 @@ class event_event(osv.osv):
def _get_register(self, cr, uid, ids, fields, args, context=None):
"""
Get Confirm or uncofirm register value.
"""Get Confirm or uncofirm register value.
@param ids: List of Event registration type's id
@param fields: List of function fields(register_current and register_prospect).
@param context: A standard dictionary for contextual values
@return: Dictionary of function fields value.
"""
register_pool = self.pool.get('event.registration')
res = {}
for event in self.browse(cr, uid, ids, context):
@@ -116,7 +127,7 @@ class event_event(osv.osv):
state.append('draft')
reg_ids = register_pool.search(cr, uid, [
('event_id', '=', event.id),
('event_id', '=', event.id),
('state', 'in', state)])
if 'register_current' in fields:
@@ -157,7 +168,6 @@ class event_event(osv.osv):
register_pool.write(cr, uid, reg_ids, register_values)
return res
_columns = {
'type': fields.many2one('event.type', 'Type', help="Type of Event like Seminar, Exhibition, Conference, Training."),
'register_max': fields.integer('Maximum Registrations', help="Provide Maximun Number of Registrations"),
@@ -183,7 +193,6 @@ class event_event(osv.osv):
'country_id': fields.related('address_id', 'country_id',
type='many2one', relation='res.country', string='Country'),
'language': fields.char('Language',size=64),
}
@@ -218,7 +227,7 @@ and users by email"),
"badge_partner": fields.char('Badge Partner', size=128),
"event_product": fields.char("Product Name", size=128, required=True),
"tobe_invoiced": fields.boolean("To be Invoiced"),
"invoice_id": fields.many2one("account.invoice", "Invoice"),
"invoice_id": fields.many2one("account.invoice", "Invoice", readonly=True),
'date_closed': fields.datetime('Closed', readonly=True),
'ref': fields.reference('Reference', selection=crm._links_get, size=128),
'ref2': fields.reference('Reference 2', selection=crm._links_get, size=128),
@@ -235,8 +244,8 @@ and users by email"),
def _make_invoice(self, cr, uid, reg, lines, context=None):
""" Create Invoice from Invoice lines
@param reg : Object of event.registration
@param lines: ids of Invoice lines
@param reg : Model of Event Registration
@param lines: Ids of Invoice lines
"""
if context is None:
context = {}
@@ -325,11 +334,10 @@ and users by email"),
return new_invoice_ids
def check_confirm(self, cr, uid, ids, context=None):
"""
Check confirm event register on given id.
"""This Function Open Event Registration and send email to user.
@param ids: List of Event registration's IDs
@param context: A standard dictionary for contextual values
@return: Dictionary value which open Confirm registration form.
@return: True
"""
data_pool = self.pool.get('ir.model.data')
unconfirmed_ids = []
@@ -360,13 +368,17 @@ and users by email"),
}
return True
def button_reg_close(self, cr, uid, ids, *args):
def button_reg_close(self, cr, uid, ids, *args):
"""This Function Close Event Registration.
"""
registrations = self.browse(cr, uid, ids)
self._history(cr, uid, registrations, _('Done'))
self.write(cr, uid, ids, {'state': 'done', 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
return True
def button_reg_cancel(self, cr, uid, ids, *args):
def button_reg_cancel(self, cr, uid, ids, *args):
"""This Function Cancel Event Registration.
"""
registrations = self.browse(cr, uid, ids)
self._history(cr, uid, registrations, _('Cancel'))
self.write(cr, uid, ids, {'state': 'cancel'})
@@ -375,8 +387,8 @@ and users by email"),
def create(self, cr, uid, values, context=None):
""" Overrides orm create method.
"""
event = self.pool.get('event.event').browse(cr, uid, values['event_id'], context=context)
event_obj = self.pool.get('event.event')
event = event_obj.browse(cr, uid, values['event_id'], context=context)
values['date_deadline']= event.date_begin
values['description']= event.mail_confirm
values['currency_id'] = event.currency_id.id
@@ -385,9 +397,12 @@ and users by email"),
self._history(cr, uid, registrations, _('Created'))
return res
def write(self, cr, uid, ids, values, context=None):
def write(self, cr, uid, ids, values, context=None):
""" Overrides orm write method.
"""
event_obj = self.pool.get('event.event')
if 'event_id' in values:
event = self.pool.get('event.event').browse(cr, uid, values['event_id'], context=context)
event = event_obj.browse(cr, uid, values['event_id'], context=context)
values['date_deadline']= event.date_begin
values['description']= event.mail_confirm
return super(event_registration, self).write(cr, uid, ids, values, context=context)
@@ -439,6 +454,13 @@ and users by email"),
return self.pool.get('account.invoice.line').create(cr, uid, vals)
def onchange_badge_name(self, cr, uid, ids, badge_name):
"""This function returns value of Registration Name based on Partner Badge Name.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Registration IDs
@param badge_name: Badge Name
"""
data ={}
if not badge_name:
@@ -448,44 +470,77 @@ and users by email"),
def onchange_contact_id(self, cr, uid, ids, contact, partner):
"""This function returns value of Badge Name , Badge Title based on Partner contact.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Registration IDs
@param contact: Patner Contact IDS
@param partner: Partner IDS
"""
data ={}
if not contact:
return data
contact_id = self.pool.get('res.partner.contact').browse(cr, uid, contact)
contact_obj = self.pool.get('res.partner.contact')
addr_obj = self.pool.get('res.partner.address')
job_obj = self.pool.get('res.partner.job')
contact_id = contact_obj.browse(cr, uid, contact)
data['badge_name'] = contact_id.name
data['badge_title'] = contact_id.title.name
if partner:
partner_addresses = self.pool.get('res.partner.address').search(cr, uid, [('partner_id', '=', partner)])
job_ids = self.pool.get('res.partner.job').search(cr, uid, [('contact_id', '=', contact), ('address_id', 'in', partner_addresses)])
partner_addresses = addr_obj.search(cr, uid, [('partner_id', '=', partner)])
job_ids = job_obj.search(cr, uid, [('contact_id', '=', contact), ('address_id', 'in', partner_addresses)])
if job_ids:
data['email_from'] = self.pool.get('res.partner.job').browse(cr, uid, job_ids[0]).email
data['email_from'] = job_obj.browse(cr, uid, job_ids[0]).email
d = self.onchange_badge_name(cr, uid, ids, data['badge_name'])
data.update(d['value'])
return {'value': data}
def onchange_event(self, cr, uid, ids, event_id, partner_invoice_id):
"""This function returns value of Product Name, Unit Price based on Event.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Registration IDs
@param event_id: Event ID
@param partner_invoice_id: Partner Invoice ID
"""
context={}
if not event_id:
return {'value': {'unit_price': False, 'event_product': False}}
data_event = self.pool.get('event.event').browse(cr, uid, event_id)
event_obj = self.pool.get('event.event')
prod_obj = self.pool.get('product.product')
res_obj = self.pool.get('res.partner')
data_event = event_obj.browse(cr, uid, event_id)
context['currency_id'] = data_event.currency_id.id
if data_event.user_id.id:
return {'value': {'user_id':data_event.user_id.id}}
if data_event.product_id:
if not partner_invoice_id:
unit_price=self.pool.get('product.product').price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
unit_price=prod_obj.price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
return {'value': {'unit_price': unit_price, 'event_product': data_event.product_id.name, 'currency_id': data_event.currency_id.id}}
data_partner = self.pool.get('res.partner').browse(cr, uid, partner_invoice_id)
data_partner = res_obj.browse(cr, uid, partner_invoice_id)
context.update({'partner_id': data_partner})
unit_price = self.pool.get('product.product')._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
unit_price = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
return {'value': {'unit_price': unit_price, 'event_product': data_event.product_id.name, 'currency_id': data_event.currency_id.id}}
return {'value': {'unit_price': False, 'event_product': False}}
def onchange_partner_id(self, cr, uid, ids, part, event_id, email=False):
"""This function returns value of Patner Invoice id, Unit Price, badget title based on partner and Event.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Registration IDs
@param event_id: Event ID
@param partner_invoice_id: Partner Invoice ID
"""
job_obj = self.pool.get('res.partner.job')
res_obj = self.pool.get('res.partner')
data={}
data['badge_partner'] = data['contact_id'] = data['partner_invoice_id'] = data['email_from'] = data['badge_title'] = data['badge_name'] = False
@@ -496,35 +551,46 @@ and users by email"),
d = self.onchange_partner_invoice_id(cr, uid, ids, event_id, part)
# this updates the dictionary
data.update(d['value'])
addr = self.pool.get('res.partner').address_get(cr, uid, [part])
addr = res_obj.address_get(cr, uid, [part])
if addr:
if addr.has_key('default'):
job_ids = self.pool.get('res.partner.job').search(cr, uid, [('address_id', '=', addr['default'])])
job_ids = job_obj.search(cr, uid, [('address_id', '=', addr['default'])])
if job_ids:
data['contact_id'] = self.pool.get('res.partner.job').browse(cr, uid, job_ids[0]).contact_id.id
data['contact_id'] = job_obj.browse(cr, uid, job_ids[0]).contact_id.id
d = self.onchange_contact_id(cr, uid, ids, data['contact_id'], part)
data.update(d['value'])
partner_data = self.pool.get('res.partner').browse(cr, uid, part)
partner_data = res_obj.browse(cr, uid, part)
data['badge_partner'] = partner_data.name
return {'value': data}
def onchange_partner_invoice_id(self, cr, uid, ids, event_id, partner_invoice_id):
"""This function returns value of Product unit Price based on Invoiced partner.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Registration IDs
@param event_id: Event ID
@param partner_invoice_id: Partner Invoice ID
"""
data={}
context={}
event_obj = self.pool.get('event.event')
prod_obj = self.pool.get('product.product')
res_obj = self.pool.get('res.partner')
data['unit_price']=False
if not event_id:
return {'value': data}
data_event = self.pool.get('event.event').browse(cr, uid, event_id)
data_event = event_obj.browse(cr, uid, event_id)
if data_event.product_id:
data['event_product']=data_event.product_id.name
if not partner_invoice_id:
data['unit_price']=self.pool.get('product.product').price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
data['unit_price']=prod_obj.price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
return {'value': data}
data_partner = self.pool.get('res.partner').browse(cr, uid, partner_invoice_id)
data_partner = res_obj.browse(cr, uid, partner_invoice_id)
context.update({'partner_id': data_partner})
data['unit_price'] = self.pool.get('product.product')._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
data['unit_price'] = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
return {'value': data}
return {'value': data}
+18 -14
View File
@@ -3,8 +3,8 @@
<data>
<menuitem name="Marketing" id="menu_marketing_event_main" icon="terp-calendar" sequence="9"/>
<menuitem name="Events Organisation" id="menu_event_main" parent="menu_marketing_event_main" />
<!-- EVENTS -->
<!--<menuitem name="Events Organisation" id="menu_event_main" icon="terp-calendar" />-->
<!-- EVENTS/CONFIGURATION/TYPE OF EVENTS -->
<record model="ir.ui.view" id="view_event_type_form">
@@ -36,7 +36,6 @@
<menuitem name="Configuration" id="menu_event_config" parent="menu_marketing_event_main" sequence="30" groups="base.group_extended"/>
<menuitem name="Types of Events" id="menu_event_type" action="action_event_type" parent="menu_event_config" groups="base.group_extended,crm.group_crm_manager"/>
<!-- Events Organisation/CONFIGURATION/EVENTS -->
<record model="ir.ui.view" id="view_event_form">
@@ -69,8 +68,7 @@
<field name="active"/>
<field name="register_min"/>
<field name="register_max"/>
<separator string="Notes" colspan="4"/>
<!--field name="note" colspan="4" nolabel="1"/-->
<newline/>
<field name="state" select="1"/>
<group col="4" colspan="2">
<button string="Confirm Event" name="button_confirm" states="draft" type="object" icon="gtk-apply"/>
@@ -113,7 +111,7 @@
</field>
</record>
<!-- event.event tree view -->
<!-- Event tree view -->
<record model="ir.ui.view" id="view_event_tree">
<field name="name">event.event.tree</field>
@@ -134,6 +132,8 @@
</field>
</record>
<!-- Events Calendar View -->
<record id="view_event_calendar" model="ir.ui.view">
<field name="name">event.event.calendar</field>
<field name="model">event.event</field>
@@ -142,12 +142,12 @@
<field name="arch" type="xml">
<calendar color="user_id" date_start="date_begin" string="Event Organization">
<field name="name"/>
<field name="partner_id"/>
<field name="type" widget="selection"/>
</calendar>
</field>
</record>
<!-- Event Graph view -->
<record model="ir.ui.view" id="view_event_graph">
<field name="name">Event Graph</field>
@@ -162,6 +162,8 @@
</field>
</record>
<!-- Event Search View -->
<record model="ir.ui.view" id="view_event_search">
<field name="name">Events</field>
<field name="model">event.event</field>
@@ -169,8 +171,8 @@
<field name="arch" type="xml">
<search string="Events">
<group col="10" colspan="4">
<filter icon="terp-document-new" string="Draft" name="draft" domain="[('state','=','draft')]" help="Draft Events"/>
<filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','confirm')]" help="Confirmed Events"/>
<filter icon="terp-check" string="Current" name="draft" domain="[('state','in',('draft', 'confirm'))]" help="Current Events"/>
<filter icon="terp-camera_test" string="Open" domain="[('state','=','confirm')]" help="Open Events"/>
<separator orientation="vertical"/>
<field name="name" string="Event" select="1"/>
<field name="state" select="1"/>
@@ -294,15 +296,17 @@
</page>
<page string="Emails" groups="base.group_extended">
<group colspan="4">
<field colspan="4" name="email_cc" string="CC"/>
<field colspan="4" name="email_cc" string="CC" widget="char" size="512"/>
</group>
<field name="message_ids" colspan="4" nolabel="1" mode="form,tree">
<form string="Communication history">
<group col="6" colspan="4">
<field name="date"/>
<field name="email_to"/>
<field name="email_from"/>
</group>
<group col="4" colspan="4">
<field name="email_from"/>
<field name="date"/>
<field name="email_to" widget="char" size="512"/>
<field name="email_cc" widget="char" size="512"/>
<field name="name" colspan="4" widget="char" size="512"/>
</group>
<notebook colspan="4">
<page string="Details">
<field name="description" colspan="4" nolabel="1"/>
+16 -27
View File
@@ -51,7 +51,7 @@
property_account_receivable: account.a_recv
- |
we create it with a "Conference on OpenERP Offshore Business" event and provide "Beginning date", "Ending Date", "Product" as Concert Ticket.
we create it with a "Conference on OpenERP Offshore Business" event and provide "Beginning date", "Ending Date" and "Product" as Concert Ticket.
-
!record {model: event.event, id: event_event_conference0}:
code: C/004
@@ -64,9 +64,9 @@
state: draft
type: 'event_type_conference0'
reply_to: 'info@customer.com'
- |
we set the limit of registrations to this event using "Minimum Registrations" 2 and "Maximum Registrations" 10
we set the limit of registrations to this event using "Minimum Registrations" 2 and "Maximum Registrations" 10.
-
!python {model: event.event}: |
self.write(cr, uid, [ref('event_event_conference0')], {'register_max': 10, 'register_min': 2})
@@ -96,7 +96,6 @@
!record {model: event.registration, id: event_registration_registrationjacot0}:
badge_name: Jacot
badge_partner: Mark Johnson
badge_title: M.
contact_id: base_contact.res_partner_contact_jacot0
date_deadline: '2010-06-07 13:39:00'
event_id: event.event_event_conference0
@@ -110,11 +109,13 @@
if not then confirmation will fail because its greater then the Maximum registration.
-
!python {model: event.event}: |
from tools.translate import _
obj_register = self.pool.get('event.registration')
event_id1 = self.browse(cr, uid, [ref('event_event_conference0')])[0]
event_id1 = self.browse(cr, uid, ref('event_event_conference0'))
register_ids = obj_register.search(cr, uid, [('event_id', '=', event_id1.id)])
register_id = obj_register.browse(cr, uid, register_ids)[0]
assert register_id.nb_register <= event_id1.register_max
assert register_id.nb_register <= event_id1.register_max, _('NO. of Registration for this event is More than Maximum Registration Defined !')
- |
And Confirm that Registration by click on "Confirm Registration" button of Registraion form.
@@ -150,7 +151,6 @@
!record {model: event.registration, id: event_registration_registrationpassot0}:
badge_name: Passot
badge_partner: Mediapole SPRL
badge_title: M.
contact_id: base_contact.res_partner_contact_passot0
date_deadline: '2010-06-07 13:39:00'
email_from: info@mediapole.net
@@ -170,10 +170,10 @@
I Check that the total number of confirmed is 2 and unconfirmed registrations 1.
-
!python {model: event.event}: |
obj_event = self.browse(cr, uid, [ref('event_event_conference0')])[0]
assert obj_event.register_current == '2'
assert obj_event.register_prospect == '1'
from tools.translate import _
obj_event = self.browse(cr, uid, ref('event_event_conference0'))
assert obj_event.register_current == 2, "Number of Confirmed Registration for this event is %s"%(obj_event.register_current)
assert obj_event.register_prospect == 1, "Number of Unconfirmed Registration for this event is %s" %(obj_event.register_prospect)
- |
This event is finished by click on "Event Done" button of this event form.
-
@@ -186,8 +186,7 @@
!assert {model: event.registration, id: event_registration_registrationjacot0}:
- state == 'open'
- |
Now, I will invoice the participant who have address using "Make Invoices". This wizard will also give the number of invoices are created and rejected.
Create invoice will be linked to Invoice Field available on Payments tab of registrations
Now, I will invoice the participant who have address using "Make Invoices".Create invoice will be linked to Invoice Field available on Payments tab of registrations.
-
!record {model: event.make.invoice, id: event_make_invoice_0}:
@@ -198,19 +197,9 @@
!python {model: event.make.invoice}: |
self.make_invoice(cr, uid, [ref("event_make_invoice_0")], {"active_ids": [ref("event_registration_registrationzen0")]})
- |
I check that Invoice for this partner is create or not.
I check that Invoice for this partner is created or not.
-
!python {model: event.registration}: |
obj_event_reg = self.pool.get('event.registration')
obj_lines = self.pool.get('account.invoice.line')
inv_obj = self.pool.get('account.invoice')
data_event_reg = obj_event_reg.browse(cr, uid, [ref('event_registration_registrationzen0')], context=context)[0]
invoice_ids = inv_obj.search(cr, uid, [('partner_id', '=', data_event_reg.partner_invoice_id.id)])
if invoice_ids:
invoice_id = inv_obj.browse(cr, uid, invoice_ids)[0]
line_ids = obj_lines.search(cr, uid, [('product_id', '=', data_event_reg.event_id.product_id.id), ('invoice_id', '=', invoice_id.id), ('price_unit', '=', data_event_reg.unit_price)])
line_id = obj_lines.browse(cr, uid, line_ids)[0]
assert line_id.product_id == data_event_reg.event_id.product_id
assert data_event_reg.partner_id == invoice_id.partner_id
assert invoice_id.address_invoice_id == data_event_reg.partner_address_id
from tools.translate import _
data_event_reg = self.browse(cr, uid, ref('event_registration_registrationzen0'), context=context)
assert data_event_reg.invoice_id, _("Invoices has not been generated for this partner")
@@ -47,23 +47,29 @@ class partner_event_registration(osv.osv_memory):
}
def open_registration(self, cr, uid, ids, context=None):
"""This Function Open Registration For Given Event id and Partner.
"""
value = {}
res_obj = self.pool.get('res.partner')
job_obj = self.pool.get('res.partner.job')
event_obj = self.pool.get('event.event')
reg_obj = self.pool.get('event.registration')
mod_obj = self.pool.get('ir.model.data')
record_ids = context and context.get('active_ids', []) or []
addr = res_obj.address_get(cr, uid, record_ids)
contact_id = False
email = False
if addr.has_key('default'):
job_ids = self.pool.get('res.partner.job').search(cr, uid, [('address_id', '=', addr['default'])])
job_ids = job_obj.search(cr, uid, [('address_id', '=', addr['default'])])
if job_ids:
contact = self.pool.get('res.partner.job').browse(cr, uid, job_ids[0])
contact = job_obj.browse(cr, uid, job_ids[0])
if contact:
contact_id = contact.contact_id.id
email = contact.email
event_obj = self.pool.get('event.event')
reg_obj = self.pool.get('event.registration')
mod_obj = self.pool.get('ir.model.data')
result = mod_obj._get_id(cr, uid, 'event', 'view_registration_search')
res = mod_obj.read(cr, uid, result, ['res_id'])
@@ -123,10 +129,11 @@ class partner_event_registration(osv.osv_memory):
return res
def onchange_event_id(self, cr, uid, ids, event_id, context={}):
res = {}
res = {}
event_obj = self.pool.get('event.event')
if event_id:
obj_event = self.pool.get('event.event')
event = obj_event.browse(cr, uid, event_id)
event = event_obj.browse(cr, uid, event_id)
res['value'] = {
'event_type': event.type and event.type.id or False,
'start_date': event.date_begin,
+3 -3
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-05-10 13:18+0000\n"
"Last-Translator: Angel Spy <melissadilara@yahoo.com>\n"
"PO-Revision-Date: 2010-07-12 11:46+0000\n"
"Last-Translator: adsiz_1029@hotmail.com <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:15+0000\n"
"X-Launchpad-Export-Date: 2010-07-13 03:49+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: hr
+1
View File
@@ -33,6 +33,7 @@
'depends': ['base', 'hr'],
'update_xml': [
'security/hr_security.xml',
'security/ir.model.access.csv',
'hr_attendance_view.xml',
'hr_attendance_wizard.xml',
'hr_attendance_report.xml',
@@ -2,5 +2,5 @@
"access_hr_action_reason_employee","hr action reason employee","model_hr_action_reason","hr_attendance.group_hr_attendance",1,0,0,0
"access_hr_action_reason_employee","hr action reason employee","model_hr_action_reason","hr.group_hr_manager",1,1,1,1
"access_hr_attendance_employee","hr attendance employee","model_hr_attendance","hr_attendance.group_hr_attendance",1,1,1,1
"access_hr_attendance_employee","hr employee attendance sign in out","hr.model_hr_employee","hr_attendance.group_hr_attendance",1,0,0,0
"access_hr_employee_attendance","hr employee attendance sign in out","hr.model_hr_employee","hr_attendance.group_hr_attendance",1,0,0,0
"access_hr_attendance_resource","hr resource attendance sign in out","resource.model_resource_resource","hr_attendance.group_hr_attendance",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_action_reason_employee hr action reason employee model_hr_action_reason hr_attendance.group_hr_attendance 1 0 0 0
3 access_hr_action_reason_employee hr action reason employee model_hr_action_reason hr.group_hr_manager 1 1 1 1
4 access_hr_attendance_employee hr attendance employee model_hr_attendance hr_attendance.group_hr_attendance 1 1 1 1
5 access_hr_attendance_employee access_hr_employee_attendance hr employee attendance sign in out hr.model_hr_employee hr_attendance.group_hr_attendance 1 0 0 0
6 access_hr_attendance_resource hr resource attendance sign in out resource.model_resource_resource hr_attendance.group_hr_attendance 1 0 0 0
@@ -50,7 +50,7 @@ class hr_recruitment_report(osv.osv):
for case in self.browse(cr, uid, ids, context):
if field_name != 'avg_answers':
state = field_name[5:]
cr.execute("select count(*) from crm_opportunity where \
cr.execute("select count(*) from crm_lead where \
section_id =%s and state='%s'"%(case.section_id.id, state))
state_cases = cr.fetchone()[0]
perc_state = (state_cases / float(case.nbr)) * 100
@@ -2,3 +2,4 @@
"access_hr_analytic_timesheet","hr.analytic.timesheet","model_hr_analytic_timesheet","hr.group_hr_user",1,1,1,1
"access_hr_account_analytic_line","account.account.analytic.line","account.model_account_analytic_line","hr.group_hr_user",1,1,1,0
"access_account_analytic_journal","account.account.analytic.journal","account.model_account_analytic_journal","hr.group_hr_user",1,0,0,0
"access_product_product_user","product.product user","product.model_product_product","hr.group_hr_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_analytic_timesheet hr.analytic.timesheet model_hr_analytic_timesheet hr.group_hr_user 1 1 1 1
3 access_hr_account_analytic_line account.account.analytic.line account.model_account_analytic_line hr.group_hr_user 1 1 1 0
4 access_account_analytic_journal account.account.analytic.journal account.model_account_analytic_journal hr.group_hr_user 1 0 0 0
5 access_product_product_user product.product user product.model_product_product hr.group_hr_user 1 0 0 0
+17 -33
View File
@@ -99,25 +99,11 @@
self.check_state(cr, uid, [ref("hr_employee_fracline1")], {"active_ids": [ref("hr_timesheet.menu_hr_timesheet_sign_in")]})
- |
I select start date and Perform start work on project.
-
!record {model: hr.sign.in.project, id: hr_sign_in_project_francline0}:
emp_id: 'hr_employee_fracline1'
name: Francline
server_date: '2010-06-08 19:50:54'
state: absent
- |
I click on "Start Working" button of this wizard to start work on Project.
-
!python {model: hr.sign.in.project}: |
uid = ref('res_users_user0')
obj_attendance = self.pool.get('hr.employee')
emp_id = obj_attendance.search(cr, uid, [('user_id', '=', uid), ('name', '=', "Francline")])
if emp_id:
employee = obj_attendance.read(cr, uid, emp_id)[0]
self.write(cr, uid, [ref('hr_sign_in_project_francline0')], {'name': employee['name'], 'state': employee['state'], 'emp_id': emp_id[0]})
#self.sign_in_result(cr, uid, [ref("hr_sign_in_project_francline0")], context)
new_id = self.create(cr, uid, {'emp_id': 'hr_employee_fracline1', 'name': 'Francline', 'server_date': '2010-06-08 19:50:54', 'state': 'absent'})
self.sign_in_result(cr, uid, [new_id], context)
- |
My work is done and I want to stop work.for that I click on "Sign In/Sign Out" button of "Sign In/Sign Out by Project" wizard.
@@ -125,33 +111,31 @@
-
!python {model: hr.sign.in.project}: |
uid = ref('res_users_user0')
self.check_state(cr, uid, [ref("hr_sign_in_project_francline0")], {"active_ids": [ref("hr_timesheet.menu_hr_timesheet_sign_in")]
ids = self.search(cr, uid, [('emp_id', '=', ref('hr_employee_fracline1')),('name', '=', 'Francline')])
self.check_state(cr, uid, ids, {"active_ids": [ref("hr_timesheet.menu_hr_timesheet_sign_in")]
})
- |
This will Open "hr sign out project" form. I select analytical project2 development account.
-
!record {model: hr.sign.out.project, id: hr_sign_out_project_francline0}:
account_id: account.analytic_project_2_development
analytic_amount: 7.0
date: '2010-05-25 16:40:00'
date_start: '2010-06-05 16:37:00'
info: Create Yaml for hr module
name: Francline
server_date: '2010-06-09 16:40:15'
state: present
-
For that I Creating a analytic account.
-
!record {model: account.analytic.account, id: account_analytic_account_project0}:
company_id: base.main_company
name: Project2
parent_id: account.analytic_root
quantity_max: 0.0
state: open
- |
My work for this project is over and I stop work by click on "Stop Work" button of this wizard.
-
!python {model: hr.sign.out.project}: |
import time
from datetime import datetime, date, timedelta
uid = ref('res_users_user0')
obj_attendance = self.pool.get('hr.employee')
emp_id = obj_attendance.search(cr, uid, [('user_id', '=', uid), ('name', '=', "Francline")])
if emp_id:
employee = obj_attendance.read(cr, uid, emp_id)[0]
self.write(cr, uid, [ref('hr_sign_out_project_francline0')], {'name': employee['name'], 'state': employee['state'], 'emp_id': emp_id[0]})
#self.sign_out_result_end(cr, uid, [ref('hr_sign_out_project_francline0')])
new_id = self.create(cr, uid, {'account_id': ref('account_analytic_account_project0'), 'analytic_amount': 7.0, 'date': (datetime.now()+timedelta(1)).strftime('%Y-%m-%d %H:%M:%S'), 'date_start': '2010-06-05 16:37:00', 'info': 'Create Yaml for hr module', 'name': 'Francline', 'server_date': '2010-06-09 16:40:15', 'state': 'absent'})
self.sign_out_result_end(cr, uid, [new_id], context)
- |
I can see employee timesheet for particular month using "Employee Timesheet" report.
+21
View File
@@ -1,6 +1,26 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- Idea Categories Search View-->
<record model="ir.ui.view" id="view_idea_category_search">
<field name="name">idea.category.search</field>
<field name="model">idea.category</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Ideas Categories">
<group col="10" colspan="4">
<field name="name" string="Category"/>
<field name="parent_id" widget="selection"/>
</group>
<newline/>
<group expand="0" string="Group By..." colspan="14">
<filter string="Parent Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'parent_id'}"/>
</group>
</search>
</field>
</record>
<!-- Idea Category Form View -->
<menuitem name="Tools" id="base.menu_tools" icon="STOCK_PREFERENCES" sequence="28"/>
@@ -41,6 +61,7 @@
<field name="res_model">idea.category</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_idea_category_search"/>
</record>
<menuitem name="Configuration" parent="base.menu_tools"
+1
View File
@@ -6,3 +6,4 @@
"access_idea_category_system","idea.category system","model_idea_category","base.group_system",1,1,1,1
"access_idea_comment","idea.comment","model_idea_comment","base.group_system",1,1,1,1
"access_idea_comment_user","idea.comment","model_idea_comment","base.group_user",1,1,1,0
"access_report_vote","report.vote","model_report_vote","base.group_user",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
6 access_idea_category_system idea.category system model_idea_category base.group_system 1 1 1 1
7 access_idea_comment idea.comment model_idea_comment base.group_system 1 1 1 1
8 access_idea_comment_user idea.comment model_idea_comment base.group_user 1 1 1 0
9 access_report_vote report.vote model_report_vote base.group_user 1 1 1 1
+49 -12
View File
@@ -140,7 +140,13 @@ class membership_line(osv.osv):
'''Member line'''
def _check_membership_date(self, cr, uid, ids, context=None):
'''Check if membership product is not in the past'''
"""Check if membership product is not in the past
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Membership Line IDs
@param context: A standard dictionary for contextual values
"""
cr.execute('''
SELECT MIN(ml.date_to - ai.date_invoice)
@@ -158,7 +164,15 @@ class membership_line(osv.osv):
return True
def _state(self, cr, uid, ids, name, args, context=None):
'''Compute the state lines'''
"""Compute the state lines
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Membership Line IDs
@param name: Field Name
@param context: A standard dictionary for contextual values
@param return: Dictionary of state Value
"""
res = {}
for line in self.browse(cr, uid, ids):
cr.execute('''
@@ -221,35 +235,47 @@ class Partner(osv.osv):
_inherit = 'res.partner'
def _get_partner_id(self, cr, uid, ids, context=None):
data_inv = self.pool.get('membership.membership_line').browse(cr, uid, ids, context)
member_line_obj = self.pool.get('membership.membership_line')
res_obj = self.pool.get('res.partner')
data_inv = member_line_obj.browse(cr, uid, ids, context)
list_partner = []
for data in data_inv:
list_partner.append(data.partner.id)
ids2 = list_partner
while ids2:
ids2 = self.pool.get('res.partner').search(cr, uid, [('associate_member','in',ids2)], context=context)
ids2 = res_obj.search(cr, uid, [('associate_member','in',ids2)], context=context)
list_partner += ids2
return list_partner
def _get_invoice_partner(self, cr, uid, ids, context=None):
data_inv = self.pool.get('account.invoice').browse(cr, uid, ids, context)
inv_obj = self.pool.get('account.invoice')
res_obj = self.pool.get('res.partner')
data_inv = inv_obj.browse(cr, uid, ids, context)
list_partner = []
for data in data_inv:
list_partner.append(data.partner_id.id)
ids2 = list_partner
while ids2:
ids2 = self.pool.get('res.partner').search(cr, uid, [('associate_member','in',ids2)], context=context)
ids2 = res_obj.search(cr, uid, [('associate_member','in',ids2)], context=context)
list_partner += ids2
return list_partner
def _membership_state(self, cr, uid, ids, name, args, context=None):
"""This Function return Membership State For Given Partner.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Partner IDs
@param name: Field Name
@param context: A standard dictionary for contextual values
@param return: Dictionary of Membership state Value
"""
res = {}
for id in ids:
res[id] = 'none'
today = time.strftime('%Y-%m-%d')
for id in ids:
partner_data = self.browse(cr,uid,id)
partner_data = self.browse(cr, uid, id)
if partner_data.membership_cancel and today > partner_data.membership_cancel:
res[id] = 'canceled'
continue
@@ -302,7 +328,7 @@ class Partner(osv.osv):
def _membership_date(self, cr, uid, ids, name, args, context=None):
'''Return date of membership'''
"""Return date of membership"""
name = name[0]
res = {}
@@ -404,6 +430,8 @@ class Partner(osv.osv):
}
def _check_recursion(self, cr, uid, ids):
"""Check Recursive for Associated Members.
"""
level = 100
while len(ids):
cr.execute('select distinct associate_member from res_partner where id IN %s',(tuple(ids),))
@@ -438,9 +466,11 @@ product_template()
class Product(osv.osv):
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
model_obj = self.pool.get('ir.model.data')
if ('product' in context) and (context['product']=='membership_product'):
model_data_ids_form = self.pool.get('ir.model.data').search(cr,user,[('model','=','ir.ui.view'),('name','in',['membership_products_form','membership_products_tree'])])
resource_id_form = self.pool.get('ir.model.data').read(cr, user, model_data_ids_form, fields=['res_id','name'])
model_data_ids_form = model_obj.search(cr,user,[('model','=','ir.ui.view'),('name','in',['membership_products_form','membership_products_tree'])])
resource_id_form = model_obj.read(cr, user, model_data_ids_form, fields=['res_id','name'])
dict_model={}
for i in resource_id_form:
dict_model[i['name']]=i['res_id']
@@ -488,6 +518,8 @@ class account_invoice_line(osv.osv):
_inherit='account.invoice.line'
def write(self, cr, uid, ids, vals, context=None):
"""Overrides orm write method
"""
if not context:
context={}
res = super(account_invoice_line, self).write(cr, uid, ids, vals, context=context)
@@ -513,6 +545,8 @@ class account_invoice_line(osv.osv):
return res
def unlink(self, cr, uid, ids, context=None):
"""Remove Membership Line Record for Account Invoice Line
"""
if not context:
context={}
member_line_obj = self.pool.get('membership.membership_line')
@@ -522,10 +556,13 @@ class account_invoice_line(osv.osv):
return super(account_invoice_line, self).unlink(cr, uid, ids, context=context)
def create(self, cr, uid, vals, context={}):
"""Overrides orm create method
"""
result = super(account_invoice_line, self).create(cr, uid, vals, context)
line = self.browse(cr, uid, result)
member_line_obj = self.pool.get('membership.membership_line')
if line.invoice_id.type == 'out_invoice':
member_line_obj = self.pool.get('membership.membership_line')
ml_ids = member_line_obj.search(cr, uid, [('account_invoice_line','=',line.id)])
if line.product_id and line.product_id.membership and not ml_ids:
# Product line is a membership product
+2 -2
View File
@@ -138,7 +138,7 @@
<field name="arch" type="xml">
<field name="membership_start" position="after">
<newline/>
<group expand="1" string="Group By" colspan="10" col="8">
<group expand="0" string="Group By" colspan="10" col="8">
<filter string="Associate Member" name = "associate" icon="terp-personal" domain="[]" context="{'group_by':'associate_member'}"/>
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'membership_state'}"/>
<separator orientation="vertical"/>
@@ -169,7 +169,7 @@
<field name="view_mode">form</field>
<field name="act_window_id" ref="action_membership_members"/>
</record>
<menuitem name="Members" parent="menu_member" id="menu_members" sequence="2" action="action_membership_members"/>
<!-- PARTNERS -->
+18 -31
View File
@@ -46,21 +46,9 @@
-
!record {model: membership.invoice, id: membership_invoice_0}:
product_id: membership.product_product_membershipproduct0
- |
I check that address is defined or not for this Member.
-
!python {model: membership.invoice}: |
partner_ids = [ref('res_partner_markjohnson0')]
addre_obj = self.pool.get('res.partner.address')
ids = addre_obj.search(cr, uid, [('partner_id', '=', partner_ids)])
addre_id = addre_obj.browse(cr, uid, ids)[0]
assert addre_id.partner_id
assert addre_id.id
assert addre_id.type
- |
I click on "Confirm" button of this wizard.
I click on "Confirm" button of this wizard. and also check that address is defined or not for this partner in this function.
-
!python {model: membership.invoice}: |
self.membership_invoice(cr, uid, [ref("membership_invoice_0")], {"active_ids": [ref("membership.res_partner_markjohnson0")]})
@@ -69,21 +57,20 @@
I check that Invoice is created for this members.
-
!python {model: res.partner}: |
from tools.translate import _
invoice_obj = self.pool.get('account.invoice')
partner_obj = self.pool.get('res.partner')
product_obj = self.pool.get('product.product')
invoice_line_obj = self.pool.get(('account.invoice.line'))
invoice_line_obj = self.pool.get('account.invoice.line')
partner_id = self.browse(cr, uid, [ref('res_partner_markjohnson0')])[0]
ids = invoice_obj.search(cr, uid, [('partner_id', '=', partner_id.id), ('account_id', '=', partner_id.property_account_receivable.id)])
invoice_id = invoice_obj.browse(cr, uid, ids)[0]
product = product_obj.browse(cr, uid, [ref('product_product_membershipproduct0')], context=context)[0]
partner_id = self.browse(cr, uid, ref('res_partner_markjohnson0'))
inv_ids = invoice_obj.search(cr, uid, [('partner_id', '=', partner_id.id), ('account_id', '=', partner_id.property_account_receivable.id)])
invoice_id = invoice_obj.browse(cr, uid, inv_ids)[0]
product = product_obj.browse(cr, uid, ref('product_product_membershipproduct0'), context=context)
line_ids = invoice_line_obj.search(cr, uid, [('product_id', '=', product.id), ('invoice_id', '=', invoice_id.id)])
line_id = invoice_line_obj.browse(cr, uid, line_ids)[0]
assert line_id.product_id.id == product.id
assert invoice_id.partner_id.id == partner_id.id
assert line_ids, _('Invoices has not been generated for this Member!')
- |
I check that the "Current membership state" will remain same untill opening the invoice.
@@ -96,17 +83,17 @@
So, I check that invoice is in draft state then the "membership state" of a member is "Waiting member".
-
!python {model: membership.membership_line}: |
partner_id = self.pool.get('res.partner').browse(cr, uid, [ref('res_partner_markjohnson0')])[0]
ids = self.search(cr, uid, [('partner', '=', partner_id.id)])
current_id = self.browse(cr, uid, ids)[0]
partner_obj = self.pool.get('res.partner')
partner_obj = self.pool.get('res.partner')
inv_obj = self.pool.get('account.invoice')
ids = inv_obj.search(cr, uid, [('partner_id', '=', partner_id.id), ('account_id', '=', partner_id.property_account_receivable.id)])
inv_id = inv_obj.browse(cr, uid, ids)[0]
partner_id = partner_obj.browse(cr, uid, ref('res_partner_markjohnson0'))
member_ids = self.search(cr, uid, [('partner', '=', partner_id.id)])
current_id = self.browse(cr, uid, member_ids)[0]
inv_ids = inv_obj.search(cr, uid, [('partner_id', '=', partner_id.id), ('account_id', '=', partner_id.property_account_receivable.id)])
inv_id = inv_obj.browse(cr, uid, inv_ids)[0]
if inv_id.state == 'draft':
assert current_id == 'waiting'
assert current_id.state == 'waiting'
- |
When the invoice is in open state it become Invoiced Member, When the invoice is in paid state the same "Current membership state" changed to Paid Member.
Now, If we cancel the invoice "Current membership state" changed to Cancel Member.
+40 -47
View File
@@ -25,56 +25,48 @@ from tools.translate import _
import tools
class membership_invoice(osv.osv_memory):
"""Membership Invoice"""
_name = "membership.invoice"
_description = "Membership Invoice From Partner"
_columns ={
_description = "Membership Invoice"
_columns = {
'product_id': fields.many2one('product.product','Membership Product', required=True),
}
}
def membership_invoice(self, cr, uid, ids, context={}):
def membership_invoice(self, cr, uid, ids, context=None):
invoice_obj = self.pool.get('account.invoice')
partner_obj = self.pool.get('res.partner')
product_obj = self.pool.get('product.product')
invoice_line_obj = self.pool.get(('account.invoice.line'))
invoice_tax_obj = self.pool.get(('account.invoice.tax'))
partner_ids = context['active_ids']
for data in self.read(cr, uid, ids, context=context):
product_id = data['product_id']
cr.execute('''
SELECT partner_id, id, type
FROM res_partner_address
WHERE partner_id IN %s''',(tuple(partner_ids),))
fetchal = cr.fetchall()
if not fetchal:
raise osv.except_osv(_('Error !'), _('No Address defined for this partner'))
partner_address_ids = {}
for x in range(len(fetchal)):
pid = fetchal[x][0]
id = fetchal[x][1]
type = fetchal[x][2]
if partner_address_ids.has_key(pid) and partner_address_ids[pid]['type'] == 'invoice':
continue
partner_address_ids[pid] = {'id': id, 'type': type}
invoice_list= []
product = product_obj.read(cr, uid, product_id, ['uom_id'], context=context)
for partner_id in partner_ids:
account_id = partner_obj.read(cr, uid, partner_id, ['property_account_receivable'], context=context)['property_account_receivable'][0]
read_fpos = partner_obj.read(cr, uid, partner_id, ['property_account_position'], context=context)
fpos_id = read_fpos['property_account_position'] and read_fpos['property_account_position'][0]
invoice_line_obj = self.pool.get('account.invoice.line')
invoice_tax_obj = self.pool.get('account.invoice.tax')
if not context:
context={}
partner_ids = context.get('active_ids', [])
invoice_list = []
for partner in partner_obj.browse(cr, uid, partner_ids, context=context):
account_id = partner.property_account_receivable and partner.property_account_receivable.id or False
fpos_id = partner.property_account_position and partner.property_account_position.id or False
addr = partner_obj.address_get(cr, uid, [partner.id], ['invoice'])
if not addr.get('invoice', False):
continue
for data in self.browse(cr, uid, ids, context=context):
product_id = data.product_id and data.product_id.id or False
product_uom_id = data.product_id and data.product_id.uom_id.id
quantity = 1
line_value = {
'product_id' : product_id,
}
quantity = 1
line_dict = invoice_line_obj.product_id_change(cr, uid, {}, product_id, product['uom_id'][0], quantity, '', 'out_invoice', partner_id, fpos_id, context=context)
}
line_dict = invoice_line_obj.product_id_change(cr, uid, {},
product_id, product_uom_id, quantity, '', 'out_invoice', partner.id, fpos_id, context=context)
line_value.update(line_dict['value'])
if line_value['invoice_line_tax_id']:
if line_value.get('invoice_line_tax_id', False):
tax_tab = [(6, 0, line_value['invoice_line_tax_id'])]
line_value['invoice_line_tax_id'] = tax_tab
invoice_id = invoice_obj.create(cr, uid, {
'partner_id' : partner_id,
'address_invoice_id': partner_address_ids[partner_id]['id'],
'partner_id' : partner.id,
'address_invoice_id': addr.get('invoice', False),
'account_id': account_id,
'fiscal_position': fpos_id or False
}
@@ -86,16 +78,17 @@ class membership_invoice(osv.osv_memory):
if line_value['invoice_line_tax_id']:
tax_value = invoice_tax_obj.compute(cr, uid, invoice_id).values()
for tax in tax_value:
invoice_tax_obj.create(cr, uid, tax, context=context)
invoice_tax_obj.create(cr, uid, tax, context=context)
return {
'domain': [('id', 'in', invoice_list)],
'name': 'Membership Invoice',
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'account.invoice',
'type': 'ir.actions.act_window',
}
return {
'domain': [('id', 'in', invoice_list)],
'name': 'Membership Invoice',
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'account.invoice',
'type': 'ir.actions.act_window',
}
membership_invoice()
@@ -9,11 +9,11 @@
<field name="arch" type="xml">
<form string="Membership Invoice">
<group colspan="4" >
<field name="product_id" context="{'product':membership_product}" domain="[('membership','=',True)]"/>
<field name="product_id" context="{'product':membership_product}" domain="[('membership','=',True)]" widget="selection"/>
</group>
<group colspan="4" col="6">
<button icon="gtk-close" special="cancel" string="Close"/>
<button icon="gtk-ok" string="Confirm" name="membership_invoice" type="object"/>
<button icon="gtk-apply" string="Confirm" name="membership_invoice" type="object"/>
</group>
</form>
</field>
@@ -39,4 +39,4 @@
</record>
</data>
</openerp>
</openerp>
+1
View File
@@ -69,6 +69,7 @@
'wizard/change_production_qty_view.xml',
'wizard/mrp_price_view.xml',
'wizard/mrp_workcenter_load_view.xml',
'wizard/mrp_change_standard_price_view.xml',
# 'wizard/mrp_track_prod_view.xml',
'mrp_view.xml',
'mrp_wizard.xml',
+4 -3
View File
@@ -63,11 +63,12 @@ class product_product(osv.osv):
"""
res = super(product_product, self).do_change_standard_price(cr, uid, ids, datas, context=context)
bom_obj = self.pool.get('mrp.bom')
change = context.get('change_parent_price', False)
def _compute_price(bom):
price = 0.0
if bom.bom_id :
if bom.bom_id.bom_lines :
for bom_line in bom.bom_id.bom_lines :
if bom.bom_id and change:
if bom.bom_id.bom_lines:
for bom_line in bom.bom_id.bom_lines:
prod_price = self.read(cr, uid, bom_line.product_id.id, ['standard_price'])['standard_price']
price += bom_line.product_qty * prod_price
+2 -2
View File
@@ -265,10 +265,10 @@
<para style="terp_default_Centre_8">[[ formatLang(o.date_planned, date_time = True) ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ o.sale_ref or removeParentNode('para')]]</para>
<para style="terp_default_Centre_8">[[ 'sale_ref' in o._columns.keys() and o.sale_ref or removeParentNode('para') ]]</para>
</td>
<td>
<para style="terp_default_Centre_8">[[ o.sale_name or removeParentNode('para') ]]</para>
<para style="terp_default_Centre_8">[[ 'sale_name' in o._columns.keys() and o.sale_name or removeParentNode('para') ]]</para>
</td>
</tr>
</blockTable>
+1
View File
@@ -24,6 +24,7 @@ import mrp_price
import mrp_workcenter_load
#import mrp_track_prod
import change_production_qty
import mrp_change_standard_price
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields, osv
class change_standard_price(osv.osv_memory):
_inherit = "stock.change.standard.price"
_description = "Change Standard Price"
_columns = {
'change_parent_price': fields.boolean('Change Parent Price'),
}
def change_price(self, cr, uid, ids, context):
""" Changes the Standard Price of Parent Product according to BoM
only when the field 'change_parent_price' is True.
And creates an account move accordingly.
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
@param ids: List of IDs selected
@param context: A standard dictionary
@return:
"""
res = self.browse(cr, uid, ids)
context.update({'change_parent_price': res[0].change_parent_price})
return super(change_standard_price, self).change_price(cr, uid, ids, context=context)
change_standard_price()
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_change_standard_price_inherit" model="ir.ui.view">
<field name="name">Change Standard Price (Inherit)</field>
<field name="model">stock.change.standard.price</field>
<field name="inherit_id" ref="stock.view_change_standard_price"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="new_price" position="after">
<field name="change_parent_price"/>
</field>
</field>
</record>
</data>
</openerp>
+6
View File
@@ -224,6 +224,8 @@ class mrp_production(osv.osv):
obj = self.browse(cr, uid, ids)[0]
for workcenter_line in obj.workcenter_lines:
tmp = self.pool.get('mrp.production.workcenter.line').action_done(cr, uid, [workcenter_line.id])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_done', cr)
return super(mrp_production,self).action_production_end(cr, uid, ids)
def action_in_production(self, cr, uid, ids):
@@ -234,6 +236,8 @@ class mrp_production(osv.osv):
workcenter_line_obj = self.pool.get('mrp.production.workcenter.line')
for workcenter_line in obj.workcenter_lines:
workcenter_line_obj.action_start_working(cr, uid, [workcenter_line.id])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_start_working', cr)
return super(mrp_production,self).action_in_production(cr, uid, ids)
def action_cancel(self, cr, uid, ids):
@@ -243,6 +247,8 @@ class mrp_production(osv.osv):
obj = self.browse(cr, uid, ids)[0]
for workcenter_line in obj.workcenter_lines:
tmp = self.pool.get('mrp.production.workcenter.line').action_cancel(cr, uid, [workcenter_line.id])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_cancel', cr)
return super(mrp_production,self).action_cancel(cr,uid,ids)
def _compute_planned_workcenter(self, cr, uid, ids, context={}, mini=False):
+36 -13
View File
@@ -4,6 +4,41 @@
<menuitem id="menu_mrp_planning" name="Planning"
parent="base.menu_mrp_root" sequence="2"
groups="base.group_extended"/>
<record id="mrp_production_form_inherit_view" model="ir.ui.view">
<field name="name">mrp.production.form.inherit</field>
<field name="model">mrp.production</field>
<field name="type">form</field>
<field name="inherit_id" ref="mrp.mrp_production_form_view"/>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page/field[@name='workcenter_lines']/form/field[@name='hour']" position="after">
<group colspan="8" col="8">
<field name="state"/>
<button name="button_draft" string="Set Draft" states="cancel" icon="gtk-convert"/>
<button name="button_start_working" string="Start" states="draft" icon="gtk-go-forward"/>
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause"/>
<button name="button_cancel" string="Cancel" states="draft,startworking" icon="gtk-cancel"/>
<button name="button_pause" string="Pause" states="startworking" icon="gtk-media-pause"/>
<button name="button_done" string="Finished" states="startworking" icon="gtk-ok"/>
</group>
</xpath>
</field>
</record>
<record id="mrp_production_form_inherit_view2" model="ir.ui.view">
<field name="name">mrp.production.form.inherit2</field>
<field name="model">mrp.production</field>
<field name="type">form</field>
<field name="inherit_id" ref="mrp.mrp_production_form_view"/>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page/field[@name='workcenter_lines']/tree/field[@name='hour']" position="after">
<field name="state"/>
<button name="button_start_working" string="Start working" states="draft,pause" icon="gtk-go-forward"/>
<button name="button_done" string="Finished" states="startworking" icon="gtk-jump-to"/>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="mrp_production_workcenter_tree_view_inherit">
<field name="name">mrp.production.workcenter.line.tree</field>
<field name="model">mrp.production.workcenter.line</field>
@@ -150,7 +185,7 @@
</record>
<!-- Action for tree view of workcenter line -->
<!-- Action for All Operations -->
<record model="ir.actions.act_window" id="mrp_production_wc_action_form">
<field name="name">Work Orders</field>
@@ -158,21 +193,9 @@
<field name="res_model">mrp.production.workcenter.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,gantt,calendar,graph</field>
<field name="domain">[('id','=',active_id)]</field>
<field name="search_view_id" ref="view_mrp_production_workcenter_form_view_filter"/>
</record>
<!-- Action for All Operations -->
<record model="ir.actions.act_window" id="mrp_production_wc_action">
<field name="name">All Work Orders</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mrp.production.workcenter.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph,calendar,gantt</field>
</record>
<record model="ir.actions.act_window" id="mrp_production_wc_action_planning">
<field name="name">Work Orders Planning</field>
<field name="type">ir.actions.act_window</field>
+93 -93
View File
@@ -42,9 +42,9 @@ class pos_config_journal(osv.osv):
pos_config_journal()
class pos_company_discount(osv.osv):
""" Company Discount and Cashboxes """
""" Company Discount and Cashboxes """
_inherit = 'res.company'
_columns = {
'company_discount': fields.float('Max Discount(%)', digits_compute= dp.get_precision('Point Of Sale')),
@@ -55,10 +55,10 @@ pos_company_discount()
class pos_order(osv.osv):
""" Point of sale gives business owners a convenient way of checking out customers
and of recording sales """
and of recording sales """
_name = "pos.order"
_description = "Point of Sale"
_order = "date_order, create_date desc"
@@ -66,7 +66,7 @@ class pos_order(osv.osv):
def unlink(self, cr, uid, ids, context={}):
for rec in self.browse(cr, uid, ids, context=context):
for rec_statement in rec.statement_ids:
if (rec_statement.statement_id and rec_statement.statement_id.state=='confirm') or rec.state=='done':
@@ -76,7 +76,7 @@ class pos_order(osv.osv):
def onchange_partner_pricelist(self, cr, uid, ids, part, context={}):
""" Changed price list on_change of partner_id"""
if not part:
return {}
pricelist = self.pool.get('res.partner').browse(cr, uid, part).property_product_pricelist.id
@@ -108,13 +108,13 @@ class pos_order(osv.osv):
return res
def _get_date_payment2(self, cr, uid, ids, context, *a):
# Todo need to check this function
# Todo need to check this function
""" Find payment Date
@param field_names: Names of fields.
@return: Dictionary of values """
res = {}
pay_obj = self.pool.get('account.bank.statement')
stat_obj_line = self.pool.get('account.bank.statement.line')
@@ -137,12 +137,12 @@ class pos_order(osv.osv):
if val:
res[order.id]=val
return res
def _get_date_payment(self, cr, uid, ids, context, *a):
""" Find Validation Date
@return: Dictionary of values """
@return: Dictionary of values """
res = {}
pay_obj = self.pool.get('pos.payment')
tot =0.0
@@ -172,22 +172,22 @@ class pos_order(osv.osv):
return res
def _amount_all(self, cr, uid, ids, name, args, context=None):
tax_obj = self.pool.get('account.tax')
cur_obj = self.pool.get('res.currency')
tax_obj = self.pool.get('account.tax')
cur_obj = self.pool.get('res.currency')
res={}
for order in self.browse(cr, uid, ids):
res[order.id] = {
'amount_paid': 0.0,
'amount_return':0.0,
'amount_tax':0.0,
}
val=0.0
cur_obj = self.pool.get('res.currency')
cur = order.pricelist_id.currency_id
}
val=0.0
cur_obj = self.pool.get('res.currency')
cur = order.pricelist_id.currency_id
for payment in order.statement_ids:
res[order.id]['amount_paid'] += payment.amount
res[order.id]['amount_paid'] += payment.amount
for payment in order.payments:
res[order.id]['amount_return'] += (payment.amount < 0 and payment.amount or 0)
res[order.id]['amount_return'] += (payment.amount < 0 and payment.amount or 0)
for line in order.lines:
if order.price_type!='tax_excluded':
res[order.id]['amount_tax'] = reduce(lambda x, y: x+round(y['amount'], 2),
@@ -197,16 +197,16 @@ class pos_order(osv.osv):
res[order.id]['amount_tax'])
elif line.qty != 0.0:
for c in tax_obj.compute_all(cr, uid, line.product_id.taxes_id, line.price_unit * (1-(line.discount or 0.0)/100.0), line.qty, line.product_id, line.order_id.partner_id)['taxes']:
val += c['amount']
val += c['amount']
res[order.id]['amount_tax'] = cur_obj.round(cr, uid, cur, val)
return res
def _sale_journal_get(self, cr, uid, context):
""" To get sale journal for this order"
@return: journal """
""" To get sale journal for this order"
@return: journal """
journal_obj = self.pool.get('account.journal')
res = journal_obj.search(cr, uid,
@@ -217,10 +217,10 @@ class pos_order(osv.osv):
return False
def _shop_get(self, cr, uid, context):
""" To get Shop for this order"
@return: Shop id """
""" To get Shop for this order"
@return: Shop id """
company = self.pool.get('res.users').browse(cr, uid, uid, context).company_id
res = self.pool.get('sale.shop').search(cr, uid, [])
if res:
@@ -228,7 +228,7 @@ class pos_order(osv.osv):
else:
return False
def copy(self, cr, uid, id, default=None, context={}):
if not default:
default = {}
default.update({
@@ -245,7 +245,7 @@ class pos_order(osv.osv):
return super(pos_order, self).copy(cr, uid, id, default, context)
def _get_v( self, cr, uid, ids,*a):
""" Changed the Validation state of order
@return: State """
@@ -326,11 +326,11 @@ class pos_order(osv.osv):
def _select_pricelist(self, cr, uid, context):
""" To get default pricelist for the order"
""" To get default pricelist for the order"
@param name: Names of fields.
@return: pricelist ID
"""
"""
pricelist = self.pool.get('product.pricelist').search(cr, uid, [('name', '=', 'Public Pricelist')])
if pricelist:
return pricelist[0]
@@ -338,11 +338,11 @@ class pos_order(osv.osv):
return False
def _journal_default(self, cr, uid, context={}):
""" To get default pricelist for the order"
""" To get default pricelist for the order"
@param name: Names of fields.
@return: journal ID
"""
"""
journal_list = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash')])
if journal_list:
return journal_list[0]
@@ -350,7 +350,7 @@ class pos_order(osv.osv):
return False
_defaults = {
'user_salesman_id':lambda self, cr, uid, context: uid,
'user_salesman_id':lambda self, cr, uid, context: uid,
'user_id': lambda self, cr, uid, context: uid,
'sale_manager': lambda self, cr, uid, context: uid,
'state': lambda *a: 'draft',
@@ -369,11 +369,11 @@ class pos_order(osv.osv):
def test_order_lines(self, cr, uid, order, context={}):
""" Test order line is created or not for the order "
""" Test order line is created or not for the order "
@param name: Names of fields.
@return: True
"""
"""
if not order.lines:
raise osv.except_osv(_('Error'), _('No order lines defined for this sale.'))
@@ -385,10 +385,10 @@ class pos_order(osv.osv):
return True
def test_paid(self, cr, uid, ids, context=None):
""" Test all amount is paid for this order
""" Test all amount is paid for this order
@return: True
"""
"""
for order in self.browse(cr, uid, ids, context):
if order.lines and not order.amount_total:
return True
@@ -398,9 +398,9 @@ class pos_order(osv.osv):
return True
def _get_qty_differences(self, orders, old_picking):
"""check if the customer changed the product quantity """
order_dict = {}
for order in orders:
for line in order.lines:
@@ -422,9 +422,9 @@ class pos_order(osv.osv):
return diff_dict
def _split_picking(self, cr, uid, ids, context, old_picking, diff_dict):
"""if the customer changes the product quantity, split the picking in two"""
# create a copy of the original picking and adjust the product qty:
picking_model = self.pool.get('stock.picking')
defaults = {
@@ -462,9 +462,9 @@ class pos_order(osv.osv):
line.unlink(context=context)
def create_picking(self, cr, uid, ids, context={}):
"""Create a picking for each order and validate it."""
picking_obj = self.pool.get('stock.picking')
pick_name=self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out')
orders = self.browse(cr, uid, ids, context)
@@ -472,7 +472,7 @@ class pos_order(osv.osv):
if not order.picking_id:
new = True
picking_id = picking_obj.create(cr, uid, {
'name':pick_name,
'name':pick_name,
'origin': order.name,
'type': 'out',
'state': 'draft',
@@ -530,8 +530,8 @@ class pos_order(osv.osv):
return True
def set_to_draft(self, cr, uid, ids, *args):
""" Changes order state to draft
""" Changes order state to draft
@return: True
"""
if not len(ids):
@@ -545,10 +545,10 @@ class pos_order(osv.osv):
return True
def button_invalidate(self, cr, uid, ids, *args):
""" Check the access for the sale order
""" Check the access for the sale order
@return: True
"""
"""
res_obj = self.pool.get('res.company')
try:
part_company=res_obj.browse(cr,uid,uid) and res_obj.browse(cr,uid,uid).parent_id and res_obj.browse(cr,uid,uid).parent_id.id or None
@@ -559,10 +559,10 @@ class pos_order(osv.osv):
return True
# def button_validate(self, cr, uid, ids, *args):
#
#
# """ Check the access for the sale order and update the date_validation
# @return: True
# """
# """
# res_obj = self.pool.get('res.company')
# try:
# part_company=res_obj.browse(cr,uid,uid) and res_obj.browse(cr,uid,uid).parent_id and res_obj.browse(cr,uid,uid).parent_id.id or None
@@ -581,18 +581,18 @@ class pos_order(osv.osv):
def cancel_order(self, cr, uid, ids, context=None):
""" Changes order state to cancel
""" Changes order state to cancel
@return: True
"""
"""
self.write(cr, uid, ids, {'state': 'cancel'})
self.cancel_picking(cr, uid, ids, context={})
return True
def add_payment(self, cr, uid, order_id, data, context=None):
"""Create a new payment for the order"""
res_obj = self.pool.get('res.company')
statementl_obj = self.pool.get('account.bank.statement.line')
prod_obj = self.pool.get('product.product')
@@ -645,9 +645,9 @@ class pos_order(osv.osv):
return statement_id
def add_product(self, cr, uid, order_id, product_id, qty, context=None):
"""Create a new order line the order"""
line_obj = self.pool.get('pos.order.line')
values = self.read(cr, uid, order_id, ['partner_id', 'pricelist_id'])
@@ -669,9 +669,9 @@ class pos_order(osv.osv):
return order_line_id
def refund(self, cr, uid, ids, context={}):
"""Create a copy of order for refund order"""
"""Create a copy of order for refund order"""
clone_list = []
line_obj = self.pool.get('pos.order.line')
@@ -696,7 +696,7 @@ class pos_order(osv.osv):
return clone_list
def action_invoice(self, cr, uid, ids, context={}):
"""Create a invoice of order """
res_obj = self.pool.get('res.company')
@@ -740,7 +740,7 @@ class pos_order(osv.osv):
'quantity': line.qty,
}
inv_name = product_obj.name_get(cr, uid, [line.product_id.id], context=context)[0][1]
inv_line.update(inv_line_ref.product_id_change(cr, uid, [],
line.product_id.id,
line.product_id.uom_id.id,
@@ -760,9 +760,9 @@ class pos_order(osv.osv):
return inv_ids
def create_account_move(self, cr, uid, ids, context=None):
"""Create a account move line of order """
"""Create a account move line of order """
account_move_obj = self.pool.get('account.move')
account_move_line_obj = self.pool.get('account.move.line')
account_period_obj = self.pool.get('account.period')
@@ -778,7 +778,7 @@ class pos_order(osv.osv):
to_reconcile = []
group_tax = {}
account_def = property_obj.get(cr, uid, 'property_account_receivable', 'res.partner', context=context).id
order_account = order.partner_id and order.partner_id.property_account_receivable and order.partner_id.property_account_receivable.id or account_def or curr_c.account_receivable.id
# Create an entry for the sale
@@ -846,7 +846,7 @@ class pos_order(osv.osv):
# Create a move for the line
account_move_line_obj.create(cr, uid, {
'name': "aa"+order.name,
'date': order.date_order,
'date': order.date_order[:10],
'ref': order.contract_number or order.name,
'quantity': line.qty,
'product_id':line.product_id.id,
@@ -874,7 +874,7 @@ class pos_order(osv.osv):
account_move_line_obj.create(cr, uid, {
'name': "bb"+order.name,
'date': order.date_order,
'date': order.date_order[:10],
'ref': order.contract_number or order.name,
'product_id':line.product_id.id,
'quantity': line.qty,
@@ -895,7 +895,7 @@ class pos_order(osv.osv):
for key, amount in group_tax.items():
account_move_line_obj.create(cr, uid, {
'name':"cc"+order.name,
'date': order.date_order,
'date': order.date_order[:10],
'ref': order.contract_number or order.name,
'move_id': move_id,
'company_id': comp_id,
@@ -913,7 +913,7 @@ class pos_order(osv.osv):
# counterpart
to_reconcile.append(account_move_line_obj.create(cr, uid, {
'name': "dd"+order.name,
'date': order.date_order,
'date': order.date_order[:10],
'ref': order.contract_number or order.name,
'move_id': move_id,
'company_id': comp_id,
@@ -964,7 +964,7 @@ class pos_order(osv.osv):
'statement_id': False,
'account_id':order_account
})
self.write(cr,uid,order.id,{'state':'done'})
return True
@@ -1073,7 +1073,7 @@ class pos_order_line(osv.osv):
else:
res[line.id]=line.price_unit*line.qty
res[line.id] = res[line.id] + tax_amount
return res
def _amount_line(self, cr, uid, ids, field_name, arg, context):
res = {}
@@ -1094,7 +1094,7 @@ class pos_order_line(osv.osv):
_('You have to select a pricelist in the sale form !\n' \
'Please set one before choosing a product.'))
p_obj = self.pool.get('product.product').browse(cr,uid,[product_id])[0]
uom_id=p_obj.uom_po_id.id
uom_id=p_obj.uom_po_id.id
price = self.pool.get('product.pricelist').price_get(cr, uid,
[pricelist], product_id, qty or 1.0, partner_id,{'uom': uom_id})[pricelist]
unit_price=price or p_obj.list_price
@@ -1103,8 +1103,8 @@ class pos_order_line(osv.osv):
_("Couldn't find a pricelist line matching this product" \
" and quantity.\nYou have to change either the product," \
" the quantity or the pricelist."))
return unit_price
return unit_price
def onchange_product_id(self, cr, uid, ids, pricelist, product_id, qty=0, partner_id=False):
price = self.price_by_product(cr, uid, ids, pricelist, product_id, qty, partner_id)
self.write(cr,uid,ids,{'price_unit':price})
@@ -1176,18 +1176,18 @@ class pos_order_line(osv.osv):
'notice': lambda *a: 'No Discount',
'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
}
# def _check_qty(self, cr, uid, ids):
# lines = self.browse(cr, uid, ids)
# for line in lines:
# if line.qty <= 0:
# return False
# return True
# _constraints = [
# (_check_qty, 'Order quantity cannot be negative or zero !', ['qty']),
# ]
def create(self, cr, user, vals, context={}):
if vals.get('product_id'):
return super(pos_order_line, self).create(cr, user, vals, context)
@@ -1296,7 +1296,7 @@ class pos_payment(osv.osv):
pos_payment()
class account_move_line(osv.osv):
_inherit = 'account.move.line'
def create(self, cr, user, vals, context={}):
pos_obj = self.pool.get('pos.order')
@@ -1316,9 +1316,9 @@ account_move_line()
class account_move(osv.osv):
_inherit = 'account.move'
def create(self, cr, user, vals, context={}):
pos_obj = self.pool.get('pos.order')
val_name = vals.get('name', '')
@@ -48,7 +48,6 @@ class pos_invoice(report_sxw.rml_parse):
raise osv.except_osv(_('Error !'), _('Please create an invoice for this sale.'))
iids.append(order.invoice_id)
nids.append(order.invoice_id.id)
self.cr.commit()
data['ids'] = nids
self.datas = data
self.ids = nids
@@ -71,7 +71,6 @@ class pos_open_statement(osv.osv_memory):
number = sequence_obj.get(cr, uid,
'account.bank.statement')
statement_id=statement_obj.create(cr,uid,{'journal_id':journal.id,
'company_id':company_id,
'user_id':uid,
+62 -1
View File
@@ -128,11 +128,30 @@
</field>
</record>
<record id="view_process_filter" model="ir.ui.view">
<field name="name">process.process.filter</field>
<field name="model">process.process</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Process">
<group col="10" colspan="4">
<field name="name"/>
<field name="model_id"/>
</group>
<newline/>
<group expand="0" string="Group By..." colspan="4" col="4">
<filter string="Object" icon="terp-personal" domain="[]" context="{'group_by':'model_id'}"/>
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_process_form">
<field name="name">Process</field>
<field name="res_model">process.process</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_process_filter" />
</record>
<menuitem
id="menu_process_form"
@@ -239,11 +258,32 @@
</field>
</record>
<record id="view_process_node_filter" model="ir.ui.view">
<field name="name">process.node.filter</field>
<field name="model">process.node</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search ProcessNode">
<group col="10" colspan="4">
<field name="name"/>
<field name="model_id"/>
<field name="kind" />
</group>
<newline/>
<group expand="0" string="Group By..." colspan="4" col="4">
<filter string="Object" icon="terp-personal" domain="[]" context="{'group_by':'model_id'}"/>
<filter string="Kind Of Node" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'kind'}"/>
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_process_node_form">
<field name="name">Process Nodes</field>
<field name="res_model">process.node</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_process_node_filter" />
</record>
<menuitem
@@ -272,7 +312,7 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Process Transition">
<group string="Details">
<group>
<field name="name" select="1"/>
<newline/>
<field name="source_node_id" select="1"/>
@@ -308,11 +348,32 @@
</field>
</record>
<record id="view_process_transition_filter" model="ir.ui.view">
<field name="name">process.transition.filter</field>
<field name="model">process.transition</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Process Transition">
<group col="10" colspan="4">
<field name="name"/>
<field name="source_node_id"/>
<field name="target_node_id" />
</group>
<newline/>
<group expand="0" string="Group By..." colspan="4" col="4">
<filter string="Source Node" icon="terp-personal" domain="[]" context="{'group_by':'source_node_id'}"/>
<filter string="Target Node" icon="terp-personal" domain="[]" context="{'group_by':'target_node_id'}"/>
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_process_transition_form">
<field name="name">Process Transitions</field>
<field name="res_model">process.transition</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_process_transition_filter" />
</record>
<menuitem
id="menu_process_transition_form"
+3
View File
@@ -372,6 +372,9 @@ class procurement_order(osv.osv):
cr.execute('update procurement_order set message=%s where id=%s', (_('Not enough stock and no minimum orderpoint rule defined.'), procurement.id))
message = _('Procurement ') + " '" + procurement.name + "' "+ _("has an exception.") + _('Not enough stock and no minimum orderpoint rule defined.')
self.log(cr, uid, procurement.id, message)
if procurement.state=='exception' and procurement.message=='':
cr.execute('update procurement_order set message=%s where id=%s', (_('Not enough stock '), procurement.id))
return ok
def action_produce_assign_service(self, cr, uid, ids, context={}):
+1 -1
View File
@@ -36,7 +36,7 @@
<field name="name" >Tasks According to User and Project</field>
<field name="model_id" ref="model_project_task"/>
<field name="global" eval="True"/>
<field name="domain_force">['|','|','|',('user_id','=',False),('user_id','=',user.id),('project_id.members','=',user.id),('project_id.user_id','=',user.id)]</field>
<field name="domain_force">['|','|','|',('user_id','=',False),('user_id','=',user.id),('project_id.members','in', [user.id]),('project_id.user_id','=',user.id)]</field>
</record>
</data>
+36 -28
View File
@@ -72,6 +72,7 @@
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="7,-1" stop="7,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/>
@@ -79,6 +80,7 @@
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="7,-1" stop="7,-1"/>
</blockTableStyle>
<blockTableStyle id="Table_All_Total_Detail">
<blockAlignment value="LEFT"/>
@@ -98,18 +100,16 @@
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle name="P1" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="P2" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Standard" fontName="Times-Roman"/>
<paraStyle name="Text body" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Standard" fontName="Helvetica"/>
<paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="List" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Contents" fontName="Times-Roman"/>
<paraStyle name="Table Heading" fontName="Times-Roman" alignment="CENTER"/>
<paraStyle name="Caption" fontName="Times-Roman" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Times-Roman"/>
<paraStyle name="Footer" fontName="Times-Roman"/>
<paraStyle name="Horizontal Line" fontName="Times-Roman" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
<paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Contents" fontName="Helvetica"/>
<paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER"/>
<paraStyle name="Caption" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Helvetica"/>
<paraStyle name="Footer" fontName="Helvetica"/>
<paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
<paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
@@ -132,8 +132,8 @@
<paraStyle name="terp_default_Bold_9_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_8_Italic" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_2" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<images/>
</stylesheet>
<images/>
<story>
<para style="terp_default_8">[[repeatIn(objects,'o')]]</para>
<para style="terp_default_8">[[ setLang(o.partner_id.lang) ]]</para>
@@ -155,13 +155,13 @@
<td>
<para style="terp_default_9">[[ repeatIn(o.dest_address_id and [o.dest_address_id] or [],'addr') ]]</para>
<para style="terp_default_Bold_9">Shipping address :</para>
<para style="P1">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
<para style="P1">[[ addr.title or '' ]] [[ addr.name ]]</para>
<para style="P1">[[ addr.street ]]</para>
<para style="P1">[[ addr.street2 or '' ]]</para>
<para style="P1">[[ addr.zip or '' ]] [[ addr.city or '' ]]</para>
<para style="P1">[[ addr.state_id and addr.state_id.name or '' ]]</para>
<para style="P2">[[ addr.country_id and addr.country_id.name or '' ]]</para>
<para style="terp_default_9">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
<para style="terp_default_9">[[ addr.title or '' ]] [[ addr.name ]]</para>
<para style="terp_default_9">[[ addr.street ]]</para>
<para style="terp_default_9">[[ addr.street2 or '' ]]</para>
<para style="terp_default_9">[[ addr.zip or '' ]] [[ addr.city or '' ]]</para>
<para style="terp_default_9">[[ addr.state_id and addr.state_id.name or '' ]]</para>
<para style="terp_default_9">[[ addr.country_id and addr.country_id.name or '' ]]</para>
</td>
</tr>
</blockTable>
@@ -175,19 +175,19 @@
</para>
</td>
<td>
<para style="terp_default_9">[[ o.partner_id.name ]] [[ o.partner_id.title or '' ]]</para>
<para style="terp_default_9">[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_address_id.title or '' ]] [[ o.partner_address_id.name ]]</para>
<para style="terp_default_9">[[ o.partner_address_id.street ]]</para>
<para style="terp_default_9">[[ o.partner_address_id.street2 or '' ]]</para>
<para style="terp_default_9">[[ o.partner_address_id.zip or '' ]] [[ o.partner_address_id.city or '' ]]</para>
<para style="terp_default_9">[[ o.partner_address_id.state_id and o.partner_address_id.state_id.name or '' ]]</para>
<para style="terp_default_9">[[ o.partner_address_id.country_id and o.partner_address_id.country_id.name or '' ]]</para>
<para style="P1">
<para style="terp_default_9">
<font color="white"> </font>
</para>
<para style="P1">Tél. : [[ o.partner_address_id.phone or '' ]]</para>
<para style="P1">Fax : [[ o.partner_address_id.fax or '' ]]</para>
<para style="P1">TVA : [[ o.partner_id.vat or '' ]]</para>
<para style="terp_default_9">Tél. : [[ o.partner_address_id.phone or '' ]]</para>
<para style="terp_default_9">Fax : [[ o.partner_address_id.fax or '' ]]</para>
<para style="terp_default_9">TVA : [[ o.partner_id.vat or '' ]]</para>
</td>
</tr>
</blockTable>
@@ -240,7 +240,7 @@
<para style="terp_default_9">
<font color="white"> </font>
</para>
<blockTable colWidths="202.0,57.0,106.0,46.0,59.0,62.0" repeatRows="1" style="Table_Header_Pur_ord_Line">
<blockTable colWidths="179.0,82.0,73.0,64.0,56.0,79.0" repeatRows="1" style="Table_Header_Pur_ord_Line">
<tr>
<td>
<para style="terp_tblheader_Details">Description</para>
@@ -258,13 +258,13 @@
<para style="terp_tblheader_Details_Right">Unit Price</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Net Price</para>
<para style="terp_tblheader_Details_Centre">Net Price</para>
</td>
</tr>
</blockTable>
<section>
<para style="terp_default_8">[[repeatIn(o.order_line,'line')]]</para>
<blockTable colWidths="200.0,58.0,106.0,28.0,20.0,59.0,63.0" style="Table_Order_Pur_line_Content">
<blockTable colWidths="179.0,82.0,73.0,44.0,20.0,58.0,56.0,23.0" style="Table_Order_Pur_line_Content">
<tr>
<td>
<para style="terp_default_9">[[ line.name ]]</para>
@@ -287,6 +287,9 @@
<td>
<para style="terp_default_Right_9">[[ formatLang(line.price_subtotal ) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ o.pricelist_id.currency_id.name ]]</para>
</td>
</tr>
<tr>
<td>
@@ -322,10 +325,15 @@
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Right_9">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
</section>
<blockTable colWidths="413.0,59.0,42.0,20.0" style="Table_All_Total_Detail">
<blockTable colWidths="391.0,55.0,66.0,23.0" style="Table_All_Total_Detail">
<tr>
<td>
<para style="terp_default_9">
@@ -50,7 +50,7 @@
-
!workflow {model: sale.order, action: order_confirm, ref: sale_order_testtender1}
-
I launch he scheduler to compute all procurements, and planify all requisitions orders.
I launch the scheduler to compute all procurements, and planify all requisitions orders.
-
!python {model: procurement.order.compute.all}: |
proc_obj = self.pool.get('procurement.order')
@@ -109,4 +109,4 @@
ids =req_obj.search(cr, uid, [('origin','=','Laptop ACER1')])
purchase_id= self.search(cr, uid, [('partner_id','=',partner_id),('requisition_id','in',ids)])[0]
state=self.browse(cr,uid,purchase_id).state
assert (state=='cancel')
assert (state=='cancel')
+25 -16
View File
@@ -68,6 +68,7 @@
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="6,-1" stop="6,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="7,-1" stop="7,-1"/>
</blockTableStyle>
<blockTableStyle id="Table6">
<blockAlignment value="LEFT"/>
@@ -91,14 +92,14 @@
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle name="Standard" fontName="Times-Roman"/>
<paraStyle name="Text body" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Standard" fontName="Helvetica"/>
<paraStyle name="Text body" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Heading" fontName="Helvetica" fontSize="8.0" leading="10" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
<paraStyle name="Table Contents" fontName="Times-Roman"/>
<paraStyle name="Table Heading" fontName="Times-Roman" alignment="CENTER"/>
<paraStyle name="Caption" fontName="Times-Roman" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Times-Roman"/>
<paraStyle name="Table Contents" fontName="Helvetica"/>
<paraStyle name="Table Heading" fontName="Helvetica" alignment="CENTER"/>
<paraStyle name="Caption" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Index" fontName="Helvetica"/>
<paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
@@ -108,8 +109,8 @@
<paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="Footer" fontName="Times-Roman"/>
<paraStyle name="Horizontal Line" fontName="Times-Roman" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
<paraStyle name="Footer" fontName="Helvetica"/>
<paraStyle name="Horizontal Line" fontName="Helvetica" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
<paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
@@ -123,10 +124,10 @@
<paraStyle name="terp_default_1" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Right_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Italic" rightIndent="0.0" leftIndent="20.0" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Preformatted Text" fontName="Times-Roman" fontSize="10.0" leading="13" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="Preformatted Text" fontName="Helvetica" fontSize="10.0" leading="13" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_default_Centre_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<images/>
</stylesheet>
<images/>
<story>
<para style="terp_default_8">[[repeatIn(objects,'o')]]</para>
<para style="terp_default_8">[[ setLang(o.partner_id.lang) ]]</para>
@@ -217,7 +218,7 @@
<para style="terp_default_8">
<font color="white"> </font>
</para>
<blockTable colWidths="208.0,99.0,64.0,59.0,43.0,65.0" repeatRows="1" style="Table4">
<blockTable colWidths="203.0,94.0,68.0,59.0,43.0,70.0" repeatRows="1" style="Table4">
<tr>
<td>
<para style="terp_tblheader_Details">Description</para>
@@ -226,7 +227,7 @@
<para style="terp_tblheader_Details_Centre">VAT</para>
</td>
<td>
<para style="terp_tblheader_Details_Centre">Quantity</para>
<para style="terp_tblheader_Details_Right">Quantity</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Unit Price</para>
@@ -235,13 +236,13 @@
<para style="terp_tblheader_Details_Right">Disc.(%)</para>
</td>
<td>
<para style="terp_tblheader_Details_Right">Price</para>
<para style="terp_tblheader_Details_Centre">Price</para>
</td>
</tr>
</blockTable>
<section>
<para style="terp_default_1">[[repeatIn(o.order_line,'line')]]</para>
<blockTable colWidths="207.0,99.0,43.0,21.0,59.0,43.0,65.0" style="Table5">
<blockTable colWidths="203.0,94.0,47.0,22.0,59.0,42.0,49.0,21.0" style="Table5">
<tr>
<td>
<para style="terp_default_9">[[ line.name ]]</para>
@@ -264,6 +265,9 @@
<td>
<para style="terp_default_Right_9">[[ formatLang(line.price_subtotal ) ]]</para>
</td>
<td>
<para style="terp_default_Right_9">[[ o.pricelist_id.currency_id.name ]]</para>
</td>
</tr>
<tr>
<td>
@@ -299,10 +303,15 @@
<font color="white"> </font>
</para>
</td>
<td>
<para style="terp_default_Right_9">
<font color="white"> </font>
</para>
</td>
</tr>
</blockTable>
</section>
<blockTable colWidths="384.0,67.0,64.0,22.0" style="Table6">
<blockTable colWidths="387.0,56.0,73.0,21.0" style="Table6">
<tr>
<td>
<para style="terp_default_9">
@@ -371,4 +380,4 @@
<font color="white"> </font>
</para>
</story>
</document>
</document>
+18 -7
View File
@@ -233,7 +233,7 @@ class sale_order(osv.osv):
'incoterm': fields.selection(_incoterm_get, 'Incoterm', size=3, help="Incoterm which stands for 'International Commercial terms' implies its a series of sales terms which are used in the commercial transaction"),
'picking_policy': fields.selection([('direct', 'Partial Delivery'), ('one', 'Complete Delivery')],
'Picking Policy', required=True, help="""If you don't have enough stock available to deliver all at once, do you accept partial shipments or not?"""),
'Picking Policy', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="""If you don't have enough stock available to deliver all at once, do you accept partial shipments or not?"""),
'order_policy': fields.selection([
('prepaid', 'Payment Before Delivery'),
('manual', 'Shipping & Manual Invoice'),
@@ -251,7 +251,7 @@ class sale_order(osv.osv):
'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft': [('readonly', False)]}),
'invoice_ids': fields.many2many('account.invoice', 'sale_order_invoice_rel', 'order_id', 'invoice_id', 'Invoices', help="This is the list of invoices that have been generated for this sale order. The same sale order may have been invoiced in several times (by line for example)."),
'picking_ids': fields.one2many('stock.picking', 'sale_id', 'Related Picking', readonly=True, help="This is the list of picking list that have been generated for this invoice"),
'shipped': fields.boolean('Picked', readonly=True, help="It indicates that a picking has been done.It will set to True if the ordered quantities are available and the picking is done.If the ordered quantities are not available it generates a Purchase/Manufacturing order.Unless its Picking and Purchase/Manufacturing order are not in the done state it wont be set to True"),
'shipped': fields.boolean('Picked', readonly=True, help="It indicates that a picking has been done. It will be set to True if the ordered quantities are available and the picking is done. If the ordered quantities are not available it generates a Purchase/Manufacturing order. Unless its Picking and Purchase/Manufacturing order are not in the done state it wont be set to True"),
'picked_rate': fields.function(_picked_rate, method=True, string='Picked', type='float'),
'invoiced_rate': fields.function(_invoiced_rate, method=True, string='Invoiced', type='float'),
'invoiced': fields.function(_invoiced, method=True, string='Paid',
@@ -786,7 +786,7 @@ class sale_order_line(osv.osv):
context = context or {}
for line in self.browse(cr, uid, ids, context=context):
price = line.price_unit * line.product_uom_qty * (1 - (line.discount or 0.0) / 100.0)
taxes = tax_obj.compute_all(cr, uid, line.tax_id, price, line.product_uom_qty)
taxes = tax_obj.compute_all(cr, uid, line.tax_id, line.price_unit, line.product_uom_qty)
cur = line.order_id.pricelist_id.currency_id
res[line.id] = cur_obj.round(cr, uid, cur, taxes['total'])
return res
@@ -828,7 +828,7 @@ class sale_order_line(osv.osv):
'discount': fields.float('Discount (%)', digits=(16, 2), readonly=True, states={'draft':[('readonly',False)]}),
'number_packages': fields.function(_number_packages, method=True, type='integer', string='Number Packages'),
'notes': fields.text('Notes'),
'th_weight': fields.float('Weight'),
'th_weight': fields.float('Weight', readonly=True, states={'draft':[('readonly',False)]}),
'state': fields.selection([('draft', 'Draft'),('confirmed', 'Confirmed'),('done', 'Done'),('cancel', 'Cancelled'),('exception', 'Exception')], 'State', required=True, readonly=True,
help=' * The \'Draft\' state is set automatically when sale order in draft state. \
\n* The \'Confirmed\' state is set automatically when sale order in confirm state. \
@@ -837,7 +837,7 @@ class sale_order_line(osv.osv):
\n* The \'Cancelled\' state is set automatically when user cancel sale order.'),
'order_partner_id': fields.related('order_id', 'partner_id', type='many2one', relation='res.partner', string='Customer'),
'salesman_id':fields.related('order_id', 'user_id', type='many2one', relation='res.users', string='Salesman'),
'company_id': fields.related('order_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True),
'company_id': fields.related('order_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True, states={'draft':[('readonly',False)]}),
}
_order = 'sequence, id'
_defaults = {
@@ -852,9 +852,17 @@ class sale_order_line(osv.osv):
'product_packaging': False
}
def create_sale_order_line_invoice(self, cr, uid, ids, context=None):
if context is None:
context = {}
context.update({'active_ids' : ids,'active_id' : ids})
self.pool.get('sale.order.line.make.invoice').make_invoices(cr, uid, ids, context=context)
return True
def invoice_line_create(self, cr, uid, ids, context=None):
if context is None:
context = {}
def _get_line_qty(line):
if (line.order_id.invoice_quantity=='order') or not line.procurement_id:
if line.product_uos:
@@ -919,7 +927,6 @@ class sale_order_line(osv.osv):
sales[line.order_id.id] = True
create_ids.append(inv_id)
# Trigger workflow events
wf_service = netsvc.LocalService("workflow")
for sid in sales.keys():
@@ -932,6 +939,10 @@ class sale_order_line(osv.osv):
for line in self.browse(cr, uid, ids, context=context):
if line.invoiced:
raise osv.except_osv(_('Invalid action !'), _('You cannot cancel a sale order line that has already been invoiced !'))
# if line.order_id.picking_ids:
# raise osv.except_osv(
# _('Could not cancel sale order line!'),
# _('You must first cancel stock move attached to this sale order line.'))
message = _('Sale order line') + " '" + line.name + "' "+_("is cancelled")
self.log(cr, uid, id, message)
return self.write(cr, uid, ids, {'state': 'cancel'})
@@ -1198,4 +1209,4 @@ class sale_config_picking_policy(osv.osv_memory):
self.pool.get('stock.location').write(cr, uid, [location_id], {'chained_auto_packing': 'transparent'})
sale_config_picking_policy()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+19 -14
View File
@@ -165,10 +165,10 @@
<field name="state"/>
<field name="invoiced"/>
<button colspan="1"
name="%(action_view_sale_order_line_make_invoice)d"
name="create_sale_order_line_invoice"
states="confirmed"
string="Make Invoice"
type="action"
string="Create Invoice"
type="object"
icon="terp-document-new" />
</group>
</page>
@@ -396,20 +396,24 @@
<field colspan="4" name="tax_id" domain="[('parent_id','=',False),('type_tax_use','&lt;&gt;','purchase')]" nolabel="1"/>
<separator colspan="4" string="States"/>
<field name="state"/>
<button colspan="1"
name="%(action_view_sale_order_line_make_invoice)d"
string="Make Invoice"
type="action"
icon="terp-document-new" />
<group col="2" colspan="2">
<group col="3" colspan="2">
<button colspan="1"
name="create_sale_order_line_invoice"
states="confirmed"
string="Create Invoice"
type="object"
icon="terp-document-new"
attrs="{'invisible': [('invoiced', '=', 1)]}"/>
<button name="button_cancel"
states="confirmed,exception"
string="Cancel" type="object"
icon="gtk-cancel"
attrs="{'invisible': [('invoiced', '=', 1)]}" />
<button name="button_done"
states="confirmed,exception"
string="Done" type="object"
icon="gtk-jump-to" />
<button name="button_cancel"
states="confirmed,exception"
string="Cancel" type="object"
icon="gtk-cancel" />
icon="gtk-jump-to"
attrs="{'invisible': [('invoiced', '=', 0)]}"/>
</group>
</page>
<!-- <page string="Properties" groups="base.group_extended">-->
@@ -492,6 +496,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="search_view_id" ref="view_sales_order_uninvoiced_line_filter" />
<field name="context">{"search_default_uninvoiced":1}</field>
<field name="filter" eval="True"/>
</record>
+1 -1
View File
@@ -87,4 +87,4 @@
!python {model: procurement.order}: |
from tools.translate import _
proc_ids = self.search(cr, uid, [('state','=','exception'),('product_id','=',ref('sale.product_product_table0'))])
assert proc_ids, _('No Procurements are in exception state for the table!')
assert not proc_ids, _('There is no procurement in exception state!')
+4 -4
View File
@@ -54,8 +54,8 @@
<hpaned>
<child1>
<action
string="My Opportunities"
name="%(crm.act_my_leads)d"
string="My Open Opportunities"
name="%(crm.act_my_oppor)d"
colspan="4"
height="150"
width="510"/>
@@ -74,8 +74,8 @@
</child1>
<child2>
<action
string="Revenues by stage"
name="%(crm.act_my_leads_stage)d"
string="Revenue by stage"
name="%(crm.act_my_oppor_stage)d"
colspan="4"/>
<action
string="My Sales Pipeline"
-24
View File
@@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,39 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Print Delivery Order',
'version': '1.0',
'category': 'Generic Modules/Sales & Purchases',
'description': """Allows to print a delivery order.""",
'author': 'Tiny',
'depends': ['sale', 'delivery'],
'init_xml': [],
'update_xml': [
'sale_delivery_report.xml'
],
'demo_xml': [],
'installable': True,
'active': False,
'certificate': '00803459507494914221',
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 06:25+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr ""
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr ""
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr ""
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-16 21:00+0000\n"
"Last-Translator: Boris <boris.t.ivanov@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Дата на поръчка"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Отпратка към поръчка"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Тегло"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Предназначение"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Поръчка за доставка :"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Поръчка за доставка"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Отпечатай поръчката за доставка"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Превозвач"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Фактурирано към"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Партида"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Дата на доставка"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Количество"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 06:25+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr ""
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr ""
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr ""
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-30 08:24+0000\n"
"Last-Translator: Raimon Esteve (Zikzakmedia) <resteve@zikzakmedia.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Data comanda"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Ref. comanda"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Pes"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Destinatari"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Ordre d'enviament :"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Ordre de lliurament"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Imprimeix ordre de lliurament"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Transportista"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Facturat a"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Lot"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Data d'enviament"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Quantitat"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 06:25+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Datum objednávky"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Hmotnost"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Označení"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Stav dodávky:"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Stav dodávky"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Vytisknout stav dodávky"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Nosič"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Fakturovány"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Nmožství"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Datum odeslání"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Množství"
-78
View File
@@ -1,78 +0,0 @@
# Danish translation for openobject-addons
# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 10:38+0000\n"
"Last-Translator: SmartWi <kurt@smartwi.net>\n"
"Language-Team: Danish <da@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Order dato"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Order"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Vægt"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Betegnelse"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Leverings order:"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Leverings order"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Udskriv leverings order"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Transportør"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Faktura til"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Lot"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Forsendelses dato"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Antal"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 10:38+0000\n"
"Last-Translator: Ferdinand-chricar <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Bestelldatum"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Referenz Auftrag"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Gewicht"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Ausschreiben"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Lieferschein:"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Lieferschein"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Druck Lieferauftrag"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Frachtführer"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Verrechnet an"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Fertigungslos"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Versanddatum"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Menge"
-80
View File
@@ -1,80 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-16 20:08+0000\n"
"Last-Translator: Andreas Porevopoulos <Unknown>\n"
"Language-Team: nls@hellug.gr <nls@hellug.gr>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"X-Poedit-Country: GREECE\n"
"X-Poedit-Language: Greek\n"
"X-Poedit-SourceCharset: utf-8\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Ημερ/νία Παραγελίας"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Παρ. Παραγγελίας"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Βάρος"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Χαρακτηρισμός"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Εντολή παράδοσης:"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Εντολή παράδοσης"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Εκτύπωση εντολής παράδοσης"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Μεταφορέας"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Τιμολογημένο σε"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Παρτίδα"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Ημερ/νία Αποστολής"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Ποσότητα"
-78
View File
@@ -1,78 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-28 07:59+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Fecha pedido"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Ref. pedido"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Peso"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Destinatario"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Orden de entrega :"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Orden de entrega"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Imprimir orden de entrega"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Transportista"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Facturado a"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Lote"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Fecha de envío"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Cantidad"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-22 19:56+0000\n"
"Last-Translator: Julieta Catalano <jcatalano@thymbra.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Fecha pedido"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Ref. pedido"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Peso"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Destinatario"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Orden de entrega :"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Orden de entrega"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Imprimir orden de entrega"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Transportista"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Facturar a"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Lote"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Fecha de embarque"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Cantidad"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-09 19:56+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Tellimuse kuupäev"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Tellimuse viide"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Kaal"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Sihtkoht"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Tarnetellimus :"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Tarnetellimus"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Prindi kättetoimetamise aruanne"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Tarnija"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Kellele arveldatud:"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Partii"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Tarnimise kuupäev"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Kogus"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-09 19:56+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Date de commande"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Réf. Commande"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Poids brut"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Désignation"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Ordre de livraison :"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Bordereau de livraison"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Imprimer le bordereau de livraison"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Transporteur"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Facturé à"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Lot"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Date de Livraison"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Quantité"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 10:38+0000\n"
"Last-Translator: Miro Glavić <glavicmiro@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Datum Narudžbe"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Narudžba Ref."
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Težina"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Naznaka"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Otpremna Narudžba"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Otpremna narudžba"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Ispiši Otpremnu Narudžbu"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Nosač"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Fakturirano na"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Lot"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Datum Otpreme"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Količina"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 06:25+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr ""
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr ""
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr ""
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-09 13:57+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr ""
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr ""
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr ""
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-01-09 13:20+0000\n"
"Last-Translator: Carlo - didotech.com <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Data Ordine"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Rif. Ordine"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Peso"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Nomina"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Ordine di consegna:"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Ordine di Consegna"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Stampa ordine consegna"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Trasportatore"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Fatturato a"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Lotto"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Data Spedizione"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Quantità"
-78
View File
@@ -1,78 +0,0 @@
# Korean translation for openobject-addons
# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-08 12:31+0000\n"
"Last-Translator: ekodaq <ceo@ekosdaq.com>\n"
"Language-Team: Korean <ko@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "주문 날짜"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "주문 참조"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "무게"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "목적지"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "배송 주문:"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "배송 주문"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "배송 주문 인쇄"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "운송자"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "인보이스 대상"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "로트"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "선적 날짜"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "수량"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 06:25+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr ""
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr ""
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr ""
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-08 16:41+0000\n"
"Last-Translator: Freerk Kalsbeek (Mindswitch BV) <f.kalsbeek@mindswitch.nl>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Orderdatum"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Order ref."
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Gewicht"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Term"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Leveringsopdracht:"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Leveringsopdracht"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Afdrukken leveringsbon"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Transporteur"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Gefactureerd aan"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Overdoos"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Verzenddatum"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Aantal"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-04-24 15:11+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr ""
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr ""
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr ""
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 10:38+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr "Data zamówienia"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr "Odn. zamówienia"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Waga"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr "Zamówienie dostawy :"
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr "Zamówienie dostawy"
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr "Drukuj zamówienie dostawy"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr "Przewoźnik"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr "Zafakturowany na"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr "Partia"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr "Data wysyłki"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Ilość"
-77
View File
@@ -1,77 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * sale_delivery_report
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-15 17:20+0000\n"
"Last-Translator: Madalena_prime <madalena.barreto@prime.cv>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 04:19+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Order Ref."
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Weight"
msgstr "Peso"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Designation"
msgstr "Designação"
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Delivery Order :"
msgstr ""
#. module: sale_delivery_report
#: model:ir.actions.report.xml,name:sale_delivery_report.report_shipping
msgid "Delivery order"
msgstr ""
#. module: sale_delivery_report
#: model:ir.module.module,shortdesc:sale_delivery_report.module_meta_information
msgid "Print Delivery Order"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Carrier"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Invoiced to"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Lot"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Shipping Date"
msgstr ""
#. module: sale_delivery_report
#: rml:sale.shipping:0
msgid "Quantity"
msgstr "Quantidade"

Some files were not shown because too many files have changed in this diff Show More