1
<?xml version="1.0" encoding="iso-8859-1"?>
3
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
8
<title>create_invoice_with_currency (lib/Helpers/AccountInvoice.rb)</title>
9
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
<link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
12
<body class="standalone-code">
13
<pre><span class="ruby-comment cmt"># File lib/Helpers/AccountInvoice.rb, line 51</span>
14
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">create_invoice_with_currency</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">partner</span>, <span class="ruby-identifier">options</span>={}, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
15
<span class="ruby-identifier">o</span> = {<span class="ruby-identifier">:type=</span><span class="ruby-operator">></span><span class="ruby-value str">'out_invoice'</span>, <span class="ruby-identifier">:currency_code=</span><span class="ruby-operator">></span><span class="ruby-value str">'EUR'</span>, <span class="ruby-identifier">:date=</span><span class="ruby-operator">></span><span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">:amount=</span><span class="ruby-operator">></span><span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">:account=</span><span class="ruby-operator">></span><span class="ruby-keyword kw">false</span>}.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">options</span>)
16
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>[<span class="ruby-identifier">:date</span>] <span class="ruby-operator">:</span>
17
<span class="ruby-identifier">date_invoice</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">str</span>=<span class="ruby-identifier">o</span>[<span class="ruby-identifier">:date</span>]).<span class="ruby-identifier">to_s</span>
18
<span class="ruby-keyword kw">else</span>
19
<span class="ruby-identifier">date_invoice</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">to_s</span>
20
<span class="ruby-keyword kw">end</span>
22
<span class="ruby-identifier">toreturn</span> = <span class="ruby-constant">AccountInvoice</span>.<span class="ruby-identifier">new</span>()
24
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">partner</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">ResPartner</span> <span class="ruby-operator">:</span>
25
<span class="ruby-identifier">raise</span> <span class="ruby-node">"!!! --- HELPER ERROR :create_cust_invoice_with_currency received a #{partner.class.to_s} instead of ResPartner"</span>
26
<span class="ruby-keyword kw">end</span>
27
<span class="ruby-comment cmt"># Set partner</span>
28
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">partner</span>.<span class="ruby-identifier">address</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">></span><span class="ruby-value">0</span>) <span class="ruby-operator">:</span>
29
<span class="ruby-identifier">toreturn</span>.<span class="ruby-identifier">partner_id</span> = <span class="ruby-identifier">partner</span>.<span class="ruby-identifier">id</span>
30
<span class="ruby-keyword kw">else</span>
31
<span class="ruby-identifier">raise</span> <span class="ruby-node">"!!! --- HELPER ERROR :create_cust_invoice_with_currency received a partner : #{partner.name} without adresses"</span>
32
<span class="ruby-keyword kw">end</span>
33
<span class="ruby-identifier">toreturn</span>.<span class="ruby-identifier">on_change</span>(<span class="ruby-value str">'onchange_partner_id'</span>, <span class="ruby-identifier">:partner_id</span> ,<span class="ruby-value">1</span>, <span class="ruby-identifier">o</span>[<span class="ruby-identifier">:type</span>], <span class="ruby-identifier">partner</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">date_invoice</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">false</span>)
35
<span class="ruby-comment cmt"># Set name & date</span>
36
<span class="ruby-identifier">toreturn</span>.<span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>
37
<span class="ruby-identifier">toreturn</span>.<span class="ruby-identifier">date_invoice</span>=<span class="ruby-identifier">date_invoice</span>
39
<span class="ruby-comment cmt"># Set type of invoice</span>
40
<span class="ruby-identifier">toreturn</span>.<span class="ruby-identifier">type</span> = <span class="ruby-identifier">o</span>[<span class="ruby-identifier">:type</span>]
41
<span class="ruby-identifier">curr</span> = <span class="ruby-constant">ResCurrency</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:first</span>, <span class="ruby-identifier">:domain=</span><span class="ruby-operator">></span>[[<span class="ruby-value str">'code'</span>,<span class="ruby-value str">'='</span>,<span class="ruby-identifier">o</span>[<span class="ruby-identifier">:currency_code</span>]]])
42
<span class="ruby-comment cmt"># Set currency</span>
43
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">curr</span> <span class="ruby-operator">:</span>
44
<span class="ruby-identifier">toreturn</span>.<span class="ruby-identifier">currency_id</span> = <span class="ruby-identifier">curr</span>.<span class="ruby-identifier">id</span>
45
<span class="ruby-keyword kw">else</span>
46
<span class="ruby-identifier">raise</span> <span class="ruby-node">"!!! --- HELPER ERROR :#{o[:currency_code]} currency not found"</span>
47
<span class="ruby-keyword kw">end</span>
49
<span class="ruby-comment cmt"># Set amount and line if asked for</span>
50
<span class="ruby-identifier">toreturn</span>.<span class="ruby-identifier">create</span>
52
<span class="ruby-comment cmt"># toreturn.type = o[:type]</span>
53
<span class="ruby-comment cmt"># toreturn.save</span>
54
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>[<span class="ruby-identifier">:amount</span>] <span class="ruby-operator">:</span>
56
<span class="ruby-keyword kw">if</span> [<span class="ruby-value str">'in_invoice'</span>, <span class="ruby-value str">'in_refund'</span>].<span class="ruby-identifier">include?</span> <span class="ruby-identifier">o</span>[<span class="ruby-identifier">:type</span>] <span class="ruby-operator">:</span>
57
<span class="ruby-identifier">toreturn</span>.<span class="ruby-identifier">check_total</span> = <span class="ruby-identifier">o</span>[<span class="ruby-identifier">:amount</span>]
58
<span class="ruby-keyword kw">end</span>
59
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>[<span class="ruby-identifier">:account</span>] <span class="ruby-operator">:</span>
60
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">account</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">AccountAccount</span> <span class="ruby-operator">:</span>
61
<span class="ruby-identifier">raise</span> <span class="ruby-node">"!!! --- HELPER ERROR :create_cust_invoice_with_currency received a #{o[:account].class.to_s} instead of AccountAccount"</span>
62
<span class="ruby-keyword kw">end</span>
63
<span class="ruby-identifier">account_id</span> = <span class="ruby-identifier">o</span>[<span class="ruby-identifier">:account</span>].<span class="ruby-identifier">id</span>
64
<span class="ruby-keyword kw">else</span>
65
<span class="ruby-comment cmt"># If no account, take on of type 'other' and a non-reconciliable account</span>
66
<span class="ruby-identifier">account_id</span> = <span class="ruby-constant">AccountAccount</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:first</span>, <span class="ruby-identifier">:domain=</span><span class="ruby-operator">></span>[[<span class="ruby-value str">'type'</span>,<span class="ruby-value str">'='</span>,<span class="ruby-value str">'other'</span>],[<span class="ruby-value str">'reconcile'</span>,<span class="ruby-value str">'='</span>,<span class="ruby-keyword kw">false</span>]]).<span class="ruby-identifier">id</span>
67
<span class="ruby-comment cmt"># Create a line = amount for the created invoice</span>
68
<span class="ruby-identifier">line</span>=<span class="ruby-constant">AccountInvoiceLine</span>.<span class="ruby-identifier">new</span>(
69
<span class="ruby-identifier">:account_id</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">account_id</span>,
70
<span class="ruby-identifier">:quantity</span> =<span class="ruby-operator">></span> <span class="ruby-value">1</span>,
71
<span class="ruby-identifier">:name</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">name</span><span class="ruby-operator">+</span><span class="ruby-value str">' line'</span>,
72
<span class="ruby-identifier">:price_unit</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">o</span>[<span class="ruby-identifier">:amount</span>],
73
<span class="ruby-identifier">:invoice_id</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">toreturn</span>.<span class="ruby-identifier">id</span>
75
<span class="ruby-identifier">line</span>.<span class="ruby-identifier">create</span>
76
<span class="ruby-keyword kw">end</span>
77
<span class="ruby-keyword kw">end</span>
78
<span class="ruby-identifier">toreturn</span>.<span class="ruby-identifier">save</span>
79
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">toreturn</span>
80
<span class="ruby-keyword kw">end</span></pre>
b'\\ No newline at end of file'