<html><head><title>/doc/plugins/hnb/</title></head>
<body>
<h2>/doc/plugins/hnb/</h2>
<ul>
<li><a href='/ikiwiki-upstream/plain/doc/plugins/?id=01d812decb7e3f3b2159f61e21448876d69baaa7'>../</a></li>
  <li><a href='/ikiwiki-upstream/plain/doc/plugins/hnb/discussion.mdwn?id=01d812decb7e3f3b2159f61e21448876d69baaa7'>discussion.mdwn</a></li>
 </ul>
</body></html>
script' src='/cgit.js'></script>
<link rel='shortcut icon' href='/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='https://source.jones.dk/ledger-smb/atom/LedgerSMB/AA.pm?h=1.2.13+jones' type='application/atom+xml'/>
<link rel='vcs-git' href='https://source.jones.dk/ledger-smb' title='ledger-smb Git repository'/>
<link rel='vcs-git' href='user@source.jones.dk:ledger-smb' title='ledger-smb Git repository'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/'><img src='/cgit-css/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/'>index</a> : <a href='/ledger-smb/'>ledger-smb</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='f997b6ce46fcc296c5a5c591ea9e439a3c68a5fd'/><select name='h' onchange='this.form.submit();'>
<option value='1.2.13+jones' selected='selected'>1.2.13+jones</option>
<option value='1.2.16+jones'>1.2.16+jones</option>
<option value='1.2.17+jones'>1.2.17+jones</option>
<option value='master'>master</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Unnamed repository; edit this file to name it for gitweb.</td><td class='sub right'>Jonas Smedegaard</td></tr></table>
<table class='tabs'><tr><td>
<a href='/ledger-smb/?h=1.2.13%2bjones'>summary</a><a href='/ledger-smb/refs/?h=1.2.13%2bjones&amp;id=f997b6ce46fcc296c5a5c591ea9e439a3c68a5fd'>refs</a><a href='/ledger-smb/log/LedgerSMB/AA.pm?h=1.2.13%2bjones'>log</a><a class='active' href='/ledger-smb/tree/LedgerSMB/AA.pm?h=1.2.13%2bjones&amp;id=f997b6ce46fcc296c5a5c591ea9e439a3c68a5fd'>tree</a><a href='/ledger-smb/commit/LedgerSMB/AA.pm?h=1.2.13%2bjones&amp;id=f997b6ce46fcc296c5a5c591ea9e439a3c68a5fd'>commit</a><a href='/ledger-smb/diff/LedgerSMB/AA.pm?h=1.2.13%2bjones&amp;id=f997b6ce46fcc296c5a5c591ea9e439a3c68a5fd'>diff</a></td><td class='form'><form class='right' method='get' action='/ledger-smb/log/LedgerSMB/AA.pm'>
<input type='hidden' name='h' value='1.2.13+jones'/><input type='hidden' name='id' value='f997b6ce46fcc296c5a5c591ea9e439a3c68a5fd'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/ledger-smb/tree/?h=1.2.13%2bjones&amp;id=f997b6ce46fcc296c5a5c591ea9e439a3c68a5fd'>root</a>/<a href='/ledger-smb/tree/LedgerSMB?h=1.2.13%2bjones&amp;id=f997b6ce46fcc296c5a5c591ea9e439a3c68a5fd'>LedgerSMB</a>/<a href='/ledger-smb/tree/LedgerSMB/AA.pm?h=1.2.13%2bjones&amp;id=f997b6ce46fcc296c5a5c591ea9e439a3c68a5fd'>AA.pm</a></div><div class='content'>blob: 22c490dc4d90306dea147b569cac938493f7867d (<a href='/ledger-smb/plain/LedgerSMB/AA.pm?h=1.2.13%2bjones&amp;id=f997b6ce46fcc296c5a5c591ea9e439a3c68a5fd'>plain</a>)
<table summary='blob content' class='blob'>
<tr>
<td class='lines'><pre><code><ol class="hl">
<li id="n_1" class="hl"><span class="hl slc">#=====================================================================</span></li>
<li id="n_2" class="hl"><span class="hl slc">#&nbsp;LedgerSMB</span></li>
<li id="n_3" class="hl"><span class="hl slc"># Small Medium Business Accounting software</span></li>
<li id="n_4" class="hl"><span class="hl slc"># http://www.ledgersmb.org/</span></li>
<li id="n_5" class="hl"><span class="hl slc"># Copyright (C) 2006</span></li>
<li id="n_6" class="hl"><span class="hl slc"># This work contains copyrighted information from a number of sources all used</span></li>
<li id="n_7" class="hl"><span class="hl slc"># with permission.</span></li>
<li id="n_8" class="hl"><span class="hl slc">#</span></li>
<li id="n_9" class="hl"><span class="hl slc"># This file contains source code included with or based on SQL-Ledger which</span></li>
<li id="n_10" class="hl"><span class="hl slc"># is Copyright Dieter Simader and DWS Systems Inc. 2000-2005 and licensed</span></li>
<li id="n_11" class="hl"><span class="hl slc"># under the GNU General Public License version 2 or, at your option, any later</span></li>
<li id="n_12" class="hl"><span class="hl slc"># version.  For a full list including contact information of contributors,</span></li>
<li id="n_13" class="hl"><span class="hl slc"># maintainers, and copyright holders, see the CONTRIBUTORS file.</span></li>
<li id="n_14" class="hl"><span class="hl slc">#</span></li>
<li id="n_15" class="hl"><span class="hl slc"># Original Copyright Notice from SQL-Ledger 2.6.17 (before the fork):</span></li>
<li id="n_16" class="hl"><span class="hl slc"># Copyright (C) 2006</span></li>
<li id="n_17" class="hl"><span class="hl slc">#</span></li>
<li id="n_18" class="hl"><span class="hl slc">#  Author: DWS Systems Inc.</span></li>
<li id="n_19" class="hl"><span class="hl slc">#     Web: http://www.sql-ledger.org</span></li>
<li id="n_20" class="hl"><span class="hl slc">#</span></li>
<li id="n_21" class="hl"><span class="hl slc">#  Contributors:</span></li>
<li id="n_22" class="hl"><span class="hl slc">#</span></li>
<li id="n_23" class="hl"><span class="hl slc">#</span></li>
<li id="n_24" class="hl"><span class="hl slc"># See COPYRIGHT file for copyright information</span></li>
<li id="n_25" class="hl"><span class="hl slc">#======================================================================</span></li>
<li id="n_26" class="hl"><span class="hl slc">#</span></li>
<li id="n_27" class="hl"><span class="hl slc"># This file has undergone whitespace cleanup.</span></li>
<li id="n_28" class="hl"><span class="hl slc">#</span></li>
<li id="n_29" class="hl"><span class="hl slc">#======================================================================</span></li>
<li id="n_30" class="hl"><span class="hl slc">#</span></li>
<li id="n_31" class="hl"><span class="hl slc"># AR/AP backend routines</span></li>
<li id="n_32" class="hl"><span class="hl slc"># common routines</span></li>
<li id="n_33" class="hl"><span class="hl slc">#</span></li>
<li id="n_34" class="hl"><span class="hl slc">#======================================================================</span></li>
<li id="n_35" class="hl"></li>
<li id="n_36" class="hl"><span class="hl kwa">package </span>AA<span class="hl opt">;</span></li>
<li id="n_37" class="hl"><span class="hl kwa">use </span>LedgerSMB<span class="hl opt">::</span>Sysconfig<span class="hl opt">;</span></li>
<li id="n_38" class="hl"></li>
<li id="n_39" class="hl"><span class="hl kwa">sub </span>post_transaction <span class="hl opt">{</span></li>
<li id="n_40" class="hl"></li>
<li id="n_41" class="hl">    <span class="hl kwc">my </span><span class="hl opt">( </span><span class="hl kwb">$self</span><span class="hl opt">, </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form </span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_42" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invnumber<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">update_defaults</span><span class="hl opt">( </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$invnumber </span><span class="hl opt">)</span></li>
<li id="n_43" class="hl">      <span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invnumber<span class="hl opt">};</span></li>
<li id="n_44" class="hl"></li>
<li id="n_45" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_46" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$dbh </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>dbh<span class="hl opt">};</span></li>
<li id="n_47" class="hl"></li>
<li id="n_48" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$query</span><span class="hl opt">;</span></li>
<li id="n_49" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_50" class="hl"></li>
<li id="n_51" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$null</span><span class="hl opt">;</span></li>
<li id="n_52" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$null</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>department_id<span class="hl opt">} ) = </span><span class="hl kwc">split</span><span class="hl opt">( </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>department<span class="hl opt">} );</span></li>
<li id="n_53" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>department_id<span class="hl opt">} *= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_54" class="hl"></li>
<li id="n_55" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ml        </span><span class="hl opt">= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_56" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$table     </span><span class="hl opt">= </span><span class="hl sng">&#39;ar&#39;</span><span class="hl opt">;</span></li>
<li id="n_57" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$buysell   </span><span class="hl opt">= </span><span class="hl sng">&#39;buy&#39;</span><span class="hl opt">;</span></li>
<li id="n_58" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ARAP      </span><span class="hl opt">= </span><span class="hl sng">&#39;AR&#39;</span><span class="hl opt">;</span></li>
<li id="n_59" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$invnumber </span><span class="hl opt">= </span><span class="hl sng">&quot;sinumber&quot;</span><span class="hl opt">;</span></li>
<li id="n_60" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$keepcleared</span><span class="hl opt">;</span></li>
<li id="n_61" class="hl"></li>
<li id="n_62" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;vendor&#39;</span> <span class="hl opt">) {</span></li>
<li id="n_63" class="hl">        <span class="hl kwb">$table     </span><span class="hl opt">= </span><span class="hl sng">&#39;ap&#39;</span><span class="hl opt">;</span></li>
<li id="n_64" class="hl">        <span class="hl kwb">$buysell   </span><span class="hl opt">= </span><span class="hl sng">&#39;sell&#39;</span><span class="hl opt">;</span></li>
<li id="n_65" class="hl">        <span class="hl kwb">$ARAP      </span><span class="hl opt">= </span><span class="hl sng">&#39;AP&#39;</span><span class="hl opt">;</span></li>
<li id="n_66" class="hl">        <span class="hl kwb">$ml        </span><span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_67" class="hl">        <span class="hl kwb">$invnumber </span><span class="hl opt">= </span><span class="hl sng">&quot;vinumber&quot;</span><span class="hl opt">;</span></li>
<li id="n_68" class="hl">    <span class="hl opt">}</span></li>
<li id="n_69" class="hl"></li>
<li id="n_70" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaultcurrency<span class="hl opt">} ) {</span></li>
<li id="n_71" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">} = </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_72" class="hl">    <span class="hl opt">}</span></li>
<li id="n_73" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_74" class="hl">        <span class="hl kwb">$exchangerate </span><span class="hl opt">=</span></li>
<li id="n_75" class="hl">          <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">check_exchangerate</span><span class="hl opt">( </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">},</span></li>
<li id="n_76" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">}, </span><span class="hl kwb">$buysell </span><span class="hl opt">);</span></li>
<li id="n_77" class="hl"></li>
<li id="n_78" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">} =</span></li>
<li id="n_79" class="hl">          <span class="hl opt">(</span><span class="hl kwb">$exchangerate</span><span class="hl opt">)</span></li>
<li id="n_80" class="hl">          <span class="hl opt">? </span><span class="hl kwb">$exchangerate</span></li>
<li id="n_81" class="hl">          <span class="hl opt">: </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">parse_amount</span><span class="hl opt">( </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">} );</span></li>
<li id="n_82" class="hl">    <span class="hl opt">}</span></li>
<li id="n_83" class="hl"></li>
<li id="n_84" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;taxaccounts </span><span class="hl opt">= </span><span class="hl kwc">split </span><span class="hl kwd">/ /</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>taxaccounts<span class="hl opt">};</span></li>
<li id="n_85" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$tax         </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_86" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$fxtax       </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_87" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$amount</span><span class="hl opt">;</span></li>
<li id="n_88" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$diff</span><span class="hl opt">;</span></li>
<li id="n_89" class="hl"></li>
<li id="n_90" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%tax </span><span class="hl opt">= ();</span></li>
<li id="n_91" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$accno</span><span class="hl opt">;</span></li>
<li id="n_92" class="hl"></li>
<li id="n_93" class="hl">    <span class="hl slc"># add taxes</span></li>
<li id="n_94" class="hl">    <span class="hl kwa">foreach </span><span class="hl kwb">$accno </span><span class="hl opt">(</span><span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">) {</span></li>
<li id="n_95" class="hl">        <span class="hl kwb">$fxtax </span><span class="hl opt">+= </span><span class="hl kwb">$tax</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$accno</span><span class="hl opt">} =</span></li>
<li id="n_96" class="hl">          <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">parse_amount</span><span class="hl opt">( </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;tax_</span><span class="hl ipl">$accno</span><span class="hl sng">&quot;</span><span class="hl opt">} );</span></li>
<li id="n_97" class="hl">        <span class="hl kwb">$tax </span><span class="hl opt">+= </span><span class="hl kwb">$tax</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$accno</span><span class="hl opt">};</span></li>
<li id="n_98" class="hl"></li>
<li id="n_99" class="hl">        <span class="hl kwc">push </span><span class="hl opt">&#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">}{</span>taxes<span class="hl opt">} },</span></li>
<li id="n_100" class="hl">          <span class="hl opt">{</span></li>
<li id="n_101" class="hl">            accno          <span class="hl opt">=&gt; </span><span class="hl kwb">$accno</span><span class="hl opt">,</span></li>
<li id="n_102" class="hl">            amount         <span class="hl opt">=&gt; </span><span class="hl kwb">$tax</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$accno</span><span class="hl opt">},</span></li>
<li id="n_103" class="hl">            project_id     <span class="hl opt">=&gt; </span><span class="hl kwc">undef</span><span class="hl opt">,</span></li>
<li id="n_104" class="hl">            fx_transaction <span class="hl opt">=&gt; </span><span class="hl num">0</span></li>
<li id="n_105" class="hl">          <span class="hl opt">};</span></li>
<li id="n_106" class="hl"></li>
<li id="n_107" class="hl">        <span class="hl kwb">$amount </span><span class="hl opt">= </span><span class="hl kwb">$tax</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$accno</span><span class="hl opt">} * </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">};</span></li>
<li id="n_108" class="hl">        <span class="hl kwb">$tax</span><span class="hl opt">{</span>amount<span class="hl opt">}{</span><span class="hl kwb">$accno</span><span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">( </span><span class="hl kwb">$amount </span><span class="hl opt">- </span><span class="hl kwb">$diff</span><span class="hl opt">, </span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_109" class="hl">        <span class="hl kwb">$diff </span><span class="hl opt">= </span><span class="hl kwb">$tax</span><span class="hl opt">{</span>amount<span class="hl opt">}{</span><span class="hl kwb">$accno</span><span class="hl opt">} - ( </span><span class="hl kwb">$amount </span><span class="hl opt">- </span><span class="hl kwb">$diff </span><span class="hl opt">);</span></li>
<li id="n_110" class="hl">        <span class="hl kwb">$amount </span><span class="hl opt">= </span><span class="hl kwb">$tax</span><span class="hl opt">{</span>amount<span class="hl opt">}{</span><span class="hl kwb">$accno</span><span class="hl opt">} - </span><span class="hl kwb">$tax</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$accno</span><span class="hl opt">};</span></li>
<li id="n_111" class="hl">        <span class="hl kwb">$tax </span><span class="hl opt">+= </span><span class="hl kwb">$amount</span><span class="hl opt">;</span></li>
<li id="n_112" class="hl"></li>
<li id="n_113" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaultcurrency<span class="hl opt">} ) {</span></li>
<li id="n_114" class="hl">            <span class="hl kwc">push </span><span class="hl opt">&#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">}{</span>taxes<span class="hl opt">} },</span></li>
<li id="n_115" class="hl">              <span class="hl opt">{</span></li>
<li id="n_116" class="hl">                accno          <span class="hl opt">=&gt; </span><span class="hl kwb">$accno</span><span class="hl opt">,</span></li>
<li id="n_117" class="hl">                amount         <span class="hl opt">=&gt; </span><span class="hl kwb">$amount</span><span class="hl opt">,</span></li>
<li id="n_118" class="hl">                project_id     <span class="hl opt">=&gt; </span><span class="hl kwc">undef</span><span class="hl opt">,</span></li>
<li id="n_119" class="hl">                fx_transaction <span class="hl opt">=&gt; </span><span class="hl num">1</span></li>
<li id="n_120" class="hl">              <span class="hl opt">};</span></li>
<li id="n_121" class="hl">        <span class="hl opt">}</span></li>
<li id="n_122" class="hl"></li>
<li id="n_123" class="hl">    <span class="hl opt">}</span></li>
<li id="n_124" class="hl"></li>
<li id="n_125" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%amount      </span><span class="hl opt">= ();</span></li>
<li id="n_126" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$fxinvamount </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_127" class="hl">    <span class="hl kwa">for </span><span class="hl opt">( </span><span class="hl num">1 </span><span class="hl opt">.. </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>rowcount<span class="hl opt">} ) {</span></li>
<li id="n_128" class="hl">        <span class="hl kwb">$fxinvamount </span><span class="hl opt">+= </span><span class="hl kwb">$amount</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$_</span><span class="hl opt">} =</span></li>
<li id="n_129" class="hl">          <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">parse_amount</span><span class="hl opt">( </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;amount_</span><span class="hl ipl">$_</span><span class="hl sng">&quot;</span><span class="hl opt">} );</span></li>
<li id="n_130" class="hl">    <span class="hl opt">}</span></li>
<li id="n_131" class="hl"></li>
<li id="n_132" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>taxincluded<span class="hl opt">} *= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_133" class="hl"></li>
<li id="n_134" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$i</span><span class="hl opt">;</span></li>
<li id="n_135" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$project_id</span><span class="hl opt">;</span></li>
<li id="n_136" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$cleared </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_137" class="hl"></li>
<li id="n_138" class="hl">    <span class="hl kwb">$diff </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_139" class="hl"></li>
<li id="n_140" class="hl">    <span class="hl slc"># deduct tax from amounts if tax included</span></li>
<li id="n_141" class="hl">    <span class="hl kwa">for </span><span class="hl kwb">$i </span><span class="hl opt">( </span><span class="hl num">1 </span><span class="hl opt">.. </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>rowcount<span class="hl opt">} ) {</span></li>
<li id="n_142" class="hl"></li>
<li id="n_143" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$amount</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} ) {</span></li>
<li id="n_144" class="hl"></li>
<li id="n_145" class="hl">            <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>taxincluded<span class="hl opt">} ) {</span></li>
<li id="n_146" class="hl">                <span class="hl kwb">$amount </span><span class="hl opt">=</span></li>
<li id="n_147" class="hl">                  <span class="hl opt">(</span><span class="hl kwb">$fxinvamount</span><span class="hl opt">)</span></li>
<li id="n_148" class="hl">                  <span class="hl opt">? </span><span class="hl kwb">$fxtax </span><span class="hl opt">* </span><span class="hl kwb">$amount</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} / </span><span class="hl kwb">$fxinvamount</span></li>
<li id="n_149" class="hl">                  <span class="hl opt">: </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_150" class="hl">                <span class="hl kwb">$amount</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} -= </span><span class="hl kwb">$amount</span><span class="hl opt">;</span></li>
<li id="n_151" class="hl">            <span class="hl opt">}</span></li>
<li id="n_152" class="hl"></li>
<li id="n_153" class="hl">            <span class="hl slc"># multiply by exchangerate</span></li>
<li id="n_154" class="hl">            <span class="hl kwb">$amount </span><span class="hl opt">= </span><span class="hl kwb">$amount</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} * </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">};</span></li>
<li id="n_155" class="hl">            <span class="hl kwb">$amount</span><span class="hl opt">{</span>amount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">( </span><span class="hl kwb">$amount </span><span class="hl opt">- </span><span class="hl kwb">$diff</span><span class="hl opt">, </span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_156" class="hl">            <span class="hl kwb">$diff </span><span class="hl opt">= </span><span class="hl kwb">$amount</span><span class="hl opt">{</span>amount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} - ( </span><span class="hl kwb">$amount </span><span class="hl opt">- </span><span class="hl kwb">$diff </span><span class="hl opt">);</span></li>
<li id="n_157" class="hl"></li>
<li id="n_158" class="hl">            <span class="hl opt">( </span><span class="hl kwb">$null</span><span class="hl opt">, </span><span class="hl kwb">$project_id </span><span class="hl opt">) = </span><span class="hl kwc">split </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;projectnumber_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_159" class="hl">            <span class="hl kwb">$project_id </span><span class="hl opt">||= </span><span class="hl kwc">undef</span><span class="hl opt">;</span></li>
<li id="n_160" class="hl">            <span class="hl opt">(</span><span class="hl kwb">$accno</span><span class="hl opt">) = </span><span class="hl kwc">split </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${ARAP}_amount_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_161" class="hl"></li>
<li id="n_162" class="hl">            <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$keepcleared</span><span class="hl opt">) {</span></li>
<li id="n_163" class="hl">                <span class="hl kwb">$cleared </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;cleared_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} ) ? </span><span class="hl num">1 </span><span class="hl opt">: </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_164" class="hl">            <span class="hl opt">}</span></li>
<li id="n_165" class="hl"></li>
<li id="n_166" class="hl">            <span class="hl kwc">push </span><span class="hl opt">&#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">}{</span>lineitems<span class="hl opt">} },</span></li>
<li id="n_167" class="hl">              <span class="hl opt">{</span></li>
<li id="n_168" class="hl">                accno          <span class="hl opt">=&gt; </span><span class="hl kwb">$accno</span><span class="hl opt">,</span></li>
<li id="n_169" class="hl">                amount         <span class="hl opt">=&gt; </span><span class="hl kwb">$amount</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">},</span></li>
<li id="n_170" class="hl">                project_id     <span class="hl opt">=&gt; </span><span class="hl kwb">$project_id</span><span class="hl opt">,</span></li>
<li id="n_171" class="hl">                description    <span class="hl opt">=&gt; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;description_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">},</span></li>
<li id="n_172" class="hl">                cleared        <span class="hl opt">=&gt; </span><span class="hl kwb">$cleared</span><span class="hl opt">,</span></li>
<li id="n_173" class="hl">                fx_transaction <span class="hl opt">=&gt; </span><span class="hl num">0</span></li>
<li id="n_174" class="hl">              <span class="hl opt">};</span></li>
<li id="n_175" class="hl"></li>
<li id="n_176" class="hl">            <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaultcurrency<span class="hl opt">} ) {</span></li>
<li id="n_177" class="hl">                <span class="hl kwb">$amount </span><span class="hl opt">= </span><span class="hl kwb">$amount</span><span class="hl opt">{</span>amount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} - </span><span class="hl kwb">$amount</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">};</span></li>
<li id="n_178" class="hl">                <span class="hl kwc">push </span><span class="hl opt">&#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">}{</span>lineitems<span class="hl opt">} },</span></li>
<li id="n_179" class="hl">                  <span class="hl opt">{</span></li>
<li id="n_180" class="hl">                    accno          <span class="hl opt">=&gt; </span><span class="hl kwb">$accno</span><span class="hl opt">,</span></li>
<li id="n_181" class="hl">                    amount         <span class="hl opt">=&gt; </span><span class="hl kwb">$amount</span><span class="hl opt">,</span></li>
<li id="n_182" class="hl">                    project_id     <span class="hl opt">=&gt; </span><span class="hl kwb">$project_id</span><span class="hl opt">,</span></li>
<li id="n_183" class="hl">                    description    <span class="hl opt">=&gt; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;description_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">},</span></li>
<li id="n_184" class="hl">                    cleared        <span class="hl opt">=&gt; </span><span class="hl kwb">$cleared</span><span class="hl opt">,</span></li>
<li id="n_185" class="hl">                    fx_transaction <span class="hl opt">=&gt; </span><span class="hl num">1</span></li>
<li id="n_186" class="hl">                  <span class="hl opt">};</span></li>
<li id="n_187" class="hl">            <span class="hl opt">}</span></li>
<li id="n_188" class="hl">        <span class="hl opt">}</span></li>
<li id="n_189" class="hl">    <span class="hl opt">}</span></li>
<li id="n_190" class="hl"></li>
<li id="n_191" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$invnetamount </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_192" class="hl">    <span class="hl kwa">for </span><span class="hl opt">( &#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">}{</span>lineitems<span class="hl opt">} } ) { </span><span class="hl kwb">$invnetamount </span><span class="hl opt">+= </span><span class="hl kwb">$_</span><span class="hl opt">-&gt;{</span>amount<span class="hl opt">} }</span></li>
<li id="n_193" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$invamount </span><span class="hl opt">= </span><span class="hl kwb">$invnetamount </span><span class="hl opt">+ </span><span class="hl kwb">$tax</span><span class="hl opt">;</span></li>
<li id="n_194" class="hl"></li>
<li id="n_195" class="hl">    <span class="hl slc"># adjust paidaccounts if there is no date in the last row</span></li>
<li id="n_196" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paidaccounts<span class="hl opt">}--</span></li>
<li id="n_197" class="hl">      <span class="hl kwa">unless </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;datepaid_</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{paidaccounts}&quot;</span><span class="hl opt">} );</span></li>
<li id="n_198" class="hl"></li>
<li id="n_199" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl sng">&quot;customer&quot;</span> <span class="hl opt">) {</span></li>
<li id="n_200" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} = </span><span class="hl sng">&quot;vendor&quot;</span><span class="hl opt">;</span></li>
<li id="n_201" class="hl">    <span class="hl opt">}</span></li>
<li id="n_202" class="hl"></li>
<li id="n_203" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$paid </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_204" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$fxamount</span><span class="hl opt">;</span></li>
<li id="n_205" class="hl"></li>
<li id="n_206" class="hl">    <span class="hl kwb">$diff </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_207" class="hl"></li>
<li id="n_208" class="hl">    <span class="hl slc"># add payments</span></li>
<li id="n_209" class="hl">    <span class="hl kwa">for </span><span class="hl kwb">$i </span><span class="hl opt">( </span><span class="hl num">1 </span><span class="hl opt">.. </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paidaccounts<span class="hl opt">} ) {</span></li>
<li id="n_210" class="hl">        <span class="hl kwb">$fxamount </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">parse_amount</span><span class="hl opt">( </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;paid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} );</span></li>
<li id="n_211" class="hl"></li>
<li id="n_212" class="hl">        <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$fxamount</span><span class="hl opt">) {</span></li>
<li id="n_213" class="hl">            <span class="hl kwb">$paid </span><span class="hl opt">+= </span><span class="hl kwb">$fxamount</span><span class="hl opt">;</span></li>
<li id="n_214" class="hl"></li>
<li id="n_215" class="hl">            <span class="hl kwb">$paidamount </span><span class="hl opt">= </span><span class="hl kwb">$fxamount </span><span class="hl opt">* </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">};</span></li>
<li id="n_216" class="hl"></li>
<li id="n_217" class="hl">            <span class="hl kwb">$amount </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">( </span><span class="hl kwb">$paidamount </span><span class="hl opt">- </span><span class="hl kwb">$diff</span><span class="hl opt">, </span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_218" class="hl">            <span class="hl kwb">$diff </span><span class="hl opt">= </span><span class="hl kwb">$amount </span><span class="hl opt">- ( </span><span class="hl kwb">$paidamount </span><span class="hl opt">- </span><span class="hl kwb">$diff </span><span class="hl opt">);</span></li>
<li id="n_219" class="hl"></li>
<li id="n_220" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>datepaid<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;datepaid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_221" class="hl"></li>
<li id="n_222" class="hl">            <span class="hl kwb">$paid</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} = </span><span class="hl kwb">$fxamount</span><span class="hl opt">;</span></li>
<li id="n_223" class="hl">            <span class="hl kwb">$paid</span><span class="hl opt">{</span>amount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">}   = </span><span class="hl kwb">$amount</span><span class="hl opt">;</span></li>
<li id="n_224" class="hl">        <span class="hl opt">}</span></li>
<li id="n_225" class="hl">    <span class="hl opt">}</span></li>
<li id="n_226" class="hl"></li>
<li id="n_227" class="hl">    <span class="hl kwb">$fxinvamount </span><span class="hl opt">+= </span><span class="hl kwb">$fxtax </span><span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>taxincluded<span class="hl opt">};</span></li>
<li id="n_228" class="hl">    <span class="hl kwb">$fxinvamount </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">( </span><span class="hl kwb">$fxinvamount</span><span class="hl opt">, </span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_229" class="hl">    <span class="hl kwb">$invamount   </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">( </span><span class="hl kwb">$invamount</span><span class="hl opt">,   </span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_230" class="hl">    <span class="hl kwb">$paid        </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">( </span><span class="hl kwb">$paid</span><span class="hl opt">,        </span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_231" class="hl"></li>
<li id="n_232" class="hl">    <span class="hl kwb">$paid </span><span class="hl opt">=</span></li>
<li id="n_233" class="hl">      <span class="hl opt">( </span><span class="hl kwb">$fxinvamount </span><span class="hl opt">== </span><span class="hl kwb">$paid </span><span class="hl opt">)</span></li>
<li id="n_234" class="hl">      <span class="hl opt">? </span><span class="hl kwb">$invamount</span></li>
<li id="n_235" class="hl">      <span class="hl opt">: </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">( </span><span class="hl kwb">$paid </span><span class="hl opt">* </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">}, </span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_236" class="hl"></li>
<li id="n_237" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>q<span class="hl opt">|</span></li>
<li id="n_238" class="hl">        SELECT <span class="hl opt">(</span>SELECT value FROM defaults </li>
<li id="n_239" class="hl">                 WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;fxgain_accno_id&#39;</span><span class="hl opt">), </span></li>
<li id="n_240" class="hl">               <span class="hl opt">(</span>SELECT value FROM defaults</li>
<li id="n_241" class="hl">                 WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;fxloss_accno_id&#39;</span><span class="hl opt">)|;</span></li>
<li id="n_242" class="hl"></li>
<li id="n_243" class="hl">    <span class="hl kwc">my </span><span class="hl opt">( </span><span class="hl kwb">$fxgain_accno_id</span><span class="hl opt">, </span><span class="hl kwb">$fxloss_accno_id </span><span class="hl opt">) = </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">selectrow_array</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_244" class="hl"></li>
<li id="n_245" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$null</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>employee_id<span class="hl opt">} ) = </span><span class="hl kwc">split </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>employee<span class="hl opt">};</span></li>
<li id="n_246" class="hl">    <span class="hl kwa">unless </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>employee_id<span class="hl opt">} ) {</span></li>
<li id="n_247" class="hl">        <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>employee<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>employee_id<span class="hl opt">} ) = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">get_employee</span><span class="hl opt">(</span><span class="hl kwb">$dbh</span><span class="hl opt">);</span></li>
<li id="n_248" class="hl">    <span class="hl opt">}</span></li>
<li id="n_249" class="hl"></li>
<li id="n_250" class="hl">    <span class="hl slc"># check if id really exists</span></li>
<li id="n_251" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} ) {</span></li>
<li id="n_252" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$id </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} );</span></li>
<li id="n_253" class="hl">        <span class="hl kwb">$keepcleared </span><span class="hl opt">= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_254" class="hl">        <span class="hl kwb">$query       </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_255" class="hl">            SELECT id</li>
<li id="n_256" class="hl">              FROM <span class="hl kwb">$table</span></li>
<li id="n_257" class="hl">             WHERE id <span class="hl opt">= </span><span class="hl kwb">$id</span><span class="hl opt">|;</span></li>
<li id="n_258" class="hl"></li>
<li id="n_259" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">selectrow_array</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">) ) {</span></li>
<li id="n_260" class="hl"></li>
<li id="n_261" class="hl">            <span class="hl slc"># delete detail records</span></li>
<li id="n_262" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_263" class="hl">                DELETE FROM acc_trans</li>
<li id="n_264" class="hl">                 WHERE trans_id <span class="hl opt">= </span><span class="hl kwb">$id</span><span class="hl opt">|;</span></li>
<li id="n_265" class="hl"></li>
<li id="n_266" class="hl">            <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwa">do</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_267" class="hl">        <span class="hl opt">}</span></li>
<li id="n_268" class="hl">    <span class="hl opt">}</span></li>
<li id="n_269" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_270" class="hl"></li>
<li id="n_271" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$uid </span><span class="hl opt">= </span><span class="hl kwc">localtime</span><span class="hl opt">;</span></li>
<li id="n_272" class="hl">        <span class="hl kwb">$uid </span><span class="hl opt">.= </span><span class="hl sng">&quot;</span><span class="hl ipl">$$</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_273" class="hl"></li>
<li id="n_274" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_275" class="hl">            INSERT INTO <span class="hl kwb">$table </span><span class="hl opt">(</span>invnumber<span class="hl opt">)</span></li>
<li id="n_276" class="hl">                 VALUES <span class="hl opt">(</span><span class="hl sng">&#39;</span><span class="hl ipl">$uid</span><span class="hl sng">&#39;</span><span class="hl opt">)|;</span></li>
<li id="n_277" class="hl"></li>
<li id="n_278" class="hl">        <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwa">do</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_279" class="hl"></li>
<li id="n_280" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_281" class="hl">            SELECT id FROM <span class="hl kwb">$table</span></li>
<li id="n_282" class="hl">             WHERE invnumber <span class="hl opt">= </span><span class="hl sng">&#39;</span><span class="hl ipl">$uid</span><span class="hl sng">&#39;</span><span class="hl opt">|;</span></li>
<li id="n_283" class="hl"></li>
<li id="n_284" class="hl">        <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} ) = </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">selectrow_array</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_285" class="hl">    <span class="hl opt">}</span></li>
<li id="n_286" class="hl"></li>
<li id="n_287" class="hl">    <span class="hl slc"># record last payment date in ar/ap table</span></li>
<li id="n_288" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>datepaid<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">} </span><span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>datepaid<span class="hl opt">};</span></li>
<li id="n_289" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$datepaid </span><span class="hl opt">= (</span><span class="hl kwb">$paid</span><span class="hl opt">) ? </span>qq<span class="hl opt">|</span><span class="hl sng">&#39;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{datepaid}&#39;</span><span class="hl opt">| : </span><span class="hl sng">&#39;NOW&#39;</span><span class="hl opt">;</span></li>
<li id="n_290" class="hl"></li>
<li id="n_291" class="hl"></li>
<li id="n_292" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_293" class="hl">        UPDATE <span class="hl kwb">$table </span></li>
<li id="n_294" class="hl">        SET invnumber <span class="hl opt">= ?,</span></li>
<li id="n_295" class="hl">            ordnumber <span class="hl opt">= ?,</span></li>
<li id="n_296" class="hl">            transdate <span class="hl opt">= ?,</span></li>
<li id="n_297" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}</span>_id <span class="hl opt">= ?,</span></li>
<li id="n_298" class="hl">            taxincluded <span class="hl opt">= ?,</span></li>
<li id="n_299" class="hl">            amount <span class="hl opt">= ?,</span></li>
<li id="n_300" class="hl">            duedate <span class="hl opt">= ?,</span></li>
<li id="n_301" class="hl">            paid <span class="hl opt">= ?,</span></li>
<li id="n_302" class="hl">            datepaid <span class="hl opt">= ?,</span></li>
<li id="n_303" class="hl">            netamount <span class="hl opt">= ?,</span></li>
<li id="n_304" class="hl">            curr <span class="hl opt">= ?,</span></li>
<li id="n_305" class="hl">            notes <span class="hl opt">= ?,</span></li>
<li id="n_306" class="hl">            department_id <span class="hl opt">= ?,</span></li>
<li id="n_307" class="hl">            employee_id <span class="hl opt">= ?,</span></li>
<li id="n_308" class="hl">            ponumber <span class="hl opt">= ?</span></li>
<li id="n_309" class="hl">        WHERE id <span class="hl opt">= ?</span></li>
<li id="n_310" class="hl">    <span class="hl opt">|;</span></li>
<li id="n_311" class="hl"></li>
<li id="n_312" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;queryargs </span><span class="hl opt">= (</span></li>
<li id="n_313" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invnumber<span class="hl opt">},     </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>ordnumber<span class="hl opt">},</span></li>
<li id="n_314" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">},     </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">},</span></li>
<li id="n_315" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>taxincluded<span class="hl opt">},   </span><span class="hl kwb">$invamount</span><span class="hl opt">,</span></li>
<li id="n_316" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>duedate<span class="hl opt">},       </span><span class="hl kwb">$paid</span><span class="hl opt">,</span></li>
<li id="n_317" class="hl">        <span class="hl kwb">$datepaid</span><span class="hl opt">,              </span><span class="hl kwb">$invnetamout</span><span class="hl opt">,</span></li>
<li id="n_318" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">},      </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>notes<span class="hl opt">},</span></li>
<li id="n_319" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>department_id<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>employee_id<span class="hl opt">},</span></li>
<li id="n_320" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>ponumber<span class="hl opt">},      </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}</span></li>
<li id="n_321" class="hl">    <span class="hl opt">);</span></li>
<li id="n_322" class="hl"></li>
<li id="n_323" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_324" class="hl"></li>
<li id="n_325" class="hl">    <span class="hl kwb">&#64;queries </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">run_custom_queries</span><span class="hl opt">( </span><span class="hl kwb">$table</span><span class="hl opt">, </span><span class="hl sng">&#39;INSERT&#39;</span> <span class="hl opt">);</span></li>
<li id="n_326" class="hl"></li>
<li id="n_327" class="hl">    <span class="hl slc"># update exchangerate</span></li>
<li id="n_328" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$buy  </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">};</span></li>
<li id="n_329" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sell </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_330" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;vendor&#39;</span> <span class="hl opt">) {</span></li>
<li id="n_331" class="hl">        <span class="hl kwb">$buy  </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_332" class="hl">        <span class="hl kwb">$sell </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">};</span></li>
<li id="n_333" class="hl">    <span class="hl opt">}</span></li>
<li id="n_334" class="hl"></li>
<li id="n_335" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaultcurrency<span class="hl opt">} ) &amp;&amp; !</span><span class="hl kwb">$exchangerate </span><span class="hl opt">) {</span></li>
<li id="n_336" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">update_exchangerate</span><span class="hl opt">( </span><span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">},</span></li>
<li id="n_337" class="hl">            <span class="hl kwb">$buy</span><span class="hl opt">, </span><span class="hl kwb">$sell </span><span class="hl opt">);</span></li>
<li id="n_338" class="hl">    <span class="hl opt">}</span></li>
<li id="n_339" class="hl"></li>
<li id="n_340" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_341" class="hl"></li>
<li id="n_342" class="hl">    <span class="hl slc"># add individual transactions</span></li>
<li id="n_343" class="hl">    <span class="hl kwa">foreach </span><span class="hl kwb">$ref </span><span class="hl opt">( &#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">}{</span>lineitems<span class="hl opt">} } ) {</span></li>
<li id="n_344" class="hl"></li>
<li id="n_345" class="hl">        <span class="hl slc"># insert detail records in acc_trans</span></li>
<li id="n_346" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>amount<span class="hl opt">} ) {</span></li>
<li id="n_347" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_348" class="hl">                INSERT INTO acc_trans </li>
<li id="n_349" class="hl">                            <span class="hl opt">(</span>trans_id<span class="hl opt">, </span>chart_id<span class="hl opt">, </span>amount<span class="hl opt">, </span></li>
<li id="n_350" class="hl">                            transdate<span class="hl opt">, </span>project_id<span class="hl opt">, </span>memo<span class="hl opt">, </span></li>
<li id="n_351" class="hl">                            fx_transaction<span class="hl opt">, </span>cleared<span class="hl opt">)</span></li>
<li id="n_352" class="hl">                    VALUES  <span class="hl opt">(?, (</span>SELECT id FROM chart</li>
<li id="n_353" class="hl">                                  WHERE accno <span class="hl opt">= ?), </span></li>
<li id="n_354" class="hl">                            <span class="hl opt">?, ?, ?, ?, ?, ?)|;</span></li>
<li id="n_355" class="hl"></li>
<li id="n_356" class="hl">            <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= (</span></li>
<li id="n_357" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">},            </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">},</span></li>
<li id="n_358" class="hl">                <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>amount<span class="hl opt">} * </span><span class="hl kwb">$ml</span><span class="hl opt">,   </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">},</span></li>
<li id="n_359" class="hl">                <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>project_id<span class="hl opt">},     </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">},</span></li>
<li id="n_360" class="hl">                <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>fx_transaction<span class="hl opt">}, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>cleared<span class="hl opt">}</span></li>
<li id="n_361" class="hl">            <span class="hl opt">);</span></li>
<li id="n_362" class="hl">            <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">)</span></li>
<li id="n_363" class="hl">              <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_364" class="hl">        <span class="hl opt">}</span></li>
<li id="n_365" class="hl">    <span class="hl opt">}</span></li>
<li id="n_366" class="hl"></li>
<li id="n_367" class="hl">    <span class="hl slc"># save taxes</span></li>
<li id="n_368" class="hl">    <span class="hl kwa">foreach </span><span class="hl kwb">$ref </span><span class="hl opt">( &#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">}{</span>taxes<span class="hl opt">} } ) {</span></li>
<li id="n_369" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>amount<span class="hl opt">} ) {</span></li>
<li id="n_370" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_371" class="hl">                INSERT INTO acc_trans </li>
<li id="n_372" class="hl">                            <span class="hl opt">(</span>trans_id<span class="hl opt">, </span>chart_id<span class="hl opt">, </span>amount<span class="hl opt">,</span></li>
<li id="n_373" class="hl">                            transdate<span class="hl opt">, </span>fx_transaction<span class="hl opt">)</span></li>
<li id="n_374" class="hl">                     VALUES <span class="hl opt">(?, (</span>SELECT id FROM chart</li>
<li id="n_375" class="hl">                              WHERE accno <span class="hl opt">= ?),</span></li>
<li id="n_376" class="hl">                            <span class="hl opt">?, ?, ?)|;</span></li>
<li id="n_377" class="hl"></li>
<li id="n_378" class="hl">            <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= (</span></li>
<li id="n_379" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">}, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>amount<span class="hl opt">} * </span><span class="hl kwb">$ml</span><span class="hl opt">,</span></li>
<li id="n_380" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">}, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>fx_transaction<span class="hl opt">}</span></li>
<li id="n_381" class="hl">            <span class="hl opt">);</span></li>
<li id="n_382" class="hl">            <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">)</span></li>
<li id="n_383" class="hl">              <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_384" class="hl">        <span class="hl opt">}</span></li>
<li id="n_385" class="hl">    <span class="hl opt">}</span></li>
<li id="n_386" class="hl"></li>
<li id="n_387" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$arap</span><span class="hl opt">;</span></li>
<li id="n_388" class="hl"></li>
<li id="n_389" class="hl">    <span class="hl slc"># record ar/ap</span></li>
<li id="n_390" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( ( </span><span class="hl kwb">$arap </span><span class="hl opt">= </span><span class="hl kwb">$invamount </span><span class="hl opt">) ) {</span></li>
<li id="n_391" class="hl">        <span class="hl opt">(</span><span class="hl kwb">$accno</span><span class="hl opt">) = </span><span class="hl kwc">split </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$ARAP</span><span class="hl opt">};</span></li>
<li id="n_392" class="hl"></li>
<li id="n_393" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_394" class="hl">            INSERT INTO acc_trans </li>
<li id="n_395" class="hl">                        <span class="hl opt">(</span>trans_id<span class="hl opt">, </span>chart_id<span class="hl opt">, </span>amount<span class="hl opt">, </span>transdate<span class="hl opt">)</span></li>
<li id="n_396" class="hl">                 VALUES <span class="hl opt">(?, (</span>SELECT id FROM chart</li>
<li id="n_397" class="hl">                              WHERE accno <span class="hl opt">= ?), </span></li>
<li id="n_398" class="hl">                              <span class="hl opt">?, ?)|;</span></li>
<li id="n_399" class="hl">        <span class="hl kwb">&#64;queryargs </span><span class="hl opt">=</span></li>
<li id="n_400" class="hl">          <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}, </span><span class="hl kwb">$accno</span><span class="hl opt">, </span><span class="hl kwb">$invamount </span><span class="hl opt">* -</span><span class="hl num">1 </span><span class="hl opt">* </span><span class="hl kwb">$ml</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">} );</span></li>
<li id="n_401" class="hl"></li>
<li id="n_402" class="hl">        <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">)</span></li>
<li id="n_403" class="hl">          <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_404" class="hl">    <span class="hl opt">}</span></li>
<li id="n_405" class="hl"></li>
<li id="n_406" class="hl">    <span class="hl slc"># if there is no amount force ar/ap</span></li>
<li id="n_407" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$fxinvamount </span><span class="hl opt">== </span><span class="hl num">0 </span><span class="hl opt">) {</span></li>
<li id="n_408" class="hl">        <span class="hl kwb">$arap </span><span class="hl opt">= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_409" class="hl">    <span class="hl opt">}</span></li>
<li id="n_410" class="hl"></li>
<li id="n_411" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$exchangerate</span><span class="hl opt">;</span></li>
<li id="n_412" class="hl"></li>
<li id="n_413" class="hl">    <span class="hl slc"># add paid transactions</span></li>
<li id="n_414" class="hl">    <span class="hl kwa">for </span><span class="hl kwb">$i </span><span class="hl opt">( </span><span class="hl num">1 </span><span class="hl opt">.. </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paidaccounts<span class="hl opt">} ) {</span></li>
<li id="n_415" class="hl"></li>
<li id="n_416" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$paid</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} ) {</span></li>
<li id="n_417" class="hl"></li>
<li id="n_418" class="hl">            <span class="hl opt">(</span><span class="hl kwb">$accno</span><span class="hl opt">) = </span><span class="hl kwc">split</span><span class="hl opt">( </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${ARAP}_paid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} );</span></li>
<li id="n_419" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;datepaid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">}</span></li>
<li id="n_420" class="hl">              <span class="hl kwa">unless </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;datepaid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} );</span></li>
<li id="n_421" class="hl"></li>
<li id="n_422" class="hl">            <span class="hl kwb">$exchangerate </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_423" class="hl"></li>
<li id="n_424" class="hl">            <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaultcurrency<span class="hl opt">} ) {</span></li>
<li id="n_425" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;exchangerate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} = </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_426" class="hl">            <span class="hl opt">}</span></li>
<li id="n_427" class="hl">            <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_428" class="hl">                <span class="hl kwb">$exchangerate </span><span class="hl opt">=</span></li>
<li id="n_429" class="hl">                  <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">check_exchangerate</span><span class="hl opt">( </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">},</span></li>
<li id="n_430" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;datepaid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl kwb">$buysell </span><span class="hl opt">);</span></li>
<li id="n_431" class="hl"></li>
<li id="n_432" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;exchangerate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} =</span></li>
<li id="n_433" class="hl">                  <span class="hl opt">(</span><span class="hl kwb">$exchangerate</span><span class="hl opt">)</span></li>
<li id="n_434" class="hl">                  <span class="hl opt">? </span><span class="hl kwb">$exchangerate</span></li>
<li id="n_435" class="hl">                  <span class="hl opt">: </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">parse_amount</span><span class="hl opt">( </span><span class="hl kwb">$myconfig</span><span class="hl opt">,</span></li>
<li id="n_436" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;exchangerate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} );</span></li>
<li id="n_437" class="hl">            <span class="hl opt">}</span></li>
<li id="n_438" class="hl"></li>
<li id="n_439" class="hl">            <span class="hl slc"># if there is no amount</span></li>
<li id="n_440" class="hl">            <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$fxinvamount </span><span class="hl opt">== </span><span class="hl num">0 </span><span class="hl opt">) {</span></li>
<li id="n_441" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;exchangerate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_442" class="hl">            <span class="hl opt">}</span></li>
<li id="n_443" class="hl"></li>
<li id="n_444" class="hl">            <span class="hl slc"># ar/ap amount</span></li>
<li id="n_445" class="hl">            <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$arap</span><span class="hl opt">) {</span></li>
<li id="n_446" class="hl">                <span class="hl opt">(</span><span class="hl kwb">$accno</span><span class="hl opt">) = </span><span class="hl kwc">split </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$ARAP</span><span class="hl opt">};</span></li>
<li id="n_447" class="hl"></li>
<li id="n_448" class="hl">                <span class="hl slc"># add ar/ap</span></li>
<li id="n_449" class="hl">                <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_450" class="hl">                    INSERT INTO acc_trans </li>
<li id="n_451" class="hl">                                <span class="hl opt">(</span>trans_id<span class="hl opt">, </span>chart_id<span class="hl opt">, </span></li>
<li id="n_452" class="hl">                                amount<span class="hl opt">,</span>transdate<span class="hl opt">)</span></li>
<li id="n_453" class="hl">                         VALUES <span class="hl opt">(?, (</span>SELECT id FROM chart</li>
<li id="n_454" class="hl">                                      WHERE accno <span class="hl opt">= ?),</span></li>
<li id="n_455" class="hl">                                <span class="hl opt">?, ?)|;</span></li>
<li id="n_456" class="hl"></li>
<li id="n_457" class="hl">                <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= (</span></li>
<li id="n_458" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}, </span><span class="hl kwb">$accno</span><span class="hl opt">,</span></li>
<li id="n_459" class="hl">                    <span class="hl kwb">$paid</span><span class="hl opt">{</span>amount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} * </span><span class="hl kwb">$ml</span><span class="hl opt">,</span></li>
<li id="n_460" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;datepaid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}</span></li>
<li id="n_461" class="hl">                <span class="hl opt">);</span></li>
<li id="n_462" class="hl">                <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">)</span></li>
<li id="n_463" class="hl">                  <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_464" class="hl">            <span class="hl opt">}</span></li>
<li id="n_465" class="hl"></li>
<li id="n_466" class="hl">            <span class="hl kwb">$arap </span><span class="hl opt">= </span><span class="hl kwb">$paid</span><span class="hl opt">{</span>amount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">};</span></li>
<li id="n_467" class="hl"></li>
<li id="n_468" class="hl">            <span class="hl slc"># add payment</span></li>
<li id="n_469" class="hl">            <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$paid</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} ) {</span></li>
<li id="n_470" class="hl"></li>
<li id="n_471" class="hl">                <span class="hl opt">(</span><span class="hl kwb">$accno</span><span class="hl opt">) = </span><span class="hl kwc">split </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${ARAP}_paid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_472" class="hl"></li>
<li id="n_473" class="hl">                <span class="hl kwc">my </span><span class="hl kwb">$cleared </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;cleared_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} ) ? </span><span class="hl num">1 </span><span class="hl opt">: </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_474" class="hl"></li>
<li id="n_475" class="hl">                <span class="hl kwb">$amount </span><span class="hl opt">= </span><span class="hl kwb">$paid</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">};</span></li>
<li id="n_476" class="hl">                <span class="hl kwb">$query  </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_477" class="hl">                    INSERT INTO acc_trans </li>
<li id="n_478" class="hl">                                <span class="hl opt">(</span>trans_id<span class="hl opt">, </span>chart_id<span class="hl opt">, </span>amount<span class="hl opt">,</span></li>
<li id="n_479" class="hl">                                transdate<span class="hl opt">, </span>source<span class="hl opt">, </span>memo<span class="hl opt">, </span></li>
<li id="n_480" class="hl">                                cleared<span class="hl opt">)</span></li>
<li id="n_481" class="hl">                         VALUES <span class="hl opt">(?, (</span>SELECT id FROM chart</li>
<li id="n_482" class="hl">                                  WHERE accno <span class="hl opt">= ?),</span></li>
<li id="n_483" class="hl">                                <span class="hl opt">?, ?, ?, ?, ?)|;</span></li>
<li id="n_484" class="hl"></li>
<li id="n_485" class="hl">                <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= (</span></li>
<li id="n_486" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">},          </span><span class="hl kwb">$accno</span><span class="hl opt">,</span></li>
<li id="n_487" class="hl">                    <span class="hl kwb">$amount </span><span class="hl opt">* -</span><span class="hl num">1 </span><span class="hl opt">* </span><span class="hl kwb">$ml</span><span class="hl opt">,   </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;datepaid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">},</span></li>
<li id="n_488" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;source_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;memo_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">},</span></li>
<li id="n_489" class="hl">                    <span class="hl kwb">$cleared</span></li>
<li id="n_490" class="hl">                <span class="hl opt">);</span></li>
<li id="n_491" class="hl">                <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">)</span></li>
<li id="n_492" class="hl">                  <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_493" class="hl"></li>
<li id="n_494" class="hl">                <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaultcurrency<span class="hl opt">} ) {</span></li>
<li id="n_495" class="hl"></li>
<li id="n_496" class="hl">                    <span class="hl slc"># exchangerate gain/loss</span></li>
<li id="n_497" class="hl">                    <span class="hl kwb">$amount </span><span class="hl opt">= (</span></li>
<li id="n_498" class="hl">                        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">(</span></li>
<li id="n_499" class="hl">                            <span class="hl kwb">$paid</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} * </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">}, </span><span class="hl num">2 </span><span class="hl opt">) -</span></li>
<li id="n_500" class="hl">                          <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">(</span></li>
<li id="n_501" class="hl">                            <span class="hl kwb">$paid</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} * </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;exchangerate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl num">2</span></li>
<li id="n_502" class="hl">                          <span class="hl opt">)</span></li>
<li id="n_503" class="hl">                    <span class="hl opt">) * -</span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_504" class="hl"></li>
<li id="n_505" class="hl">                    <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$amount</span><span class="hl opt">) {</span></li>
<li id="n_506" class="hl"></li>
<li id="n_507" class="hl">                        <span class="hl kwc">my </span><span class="hl kwb">$accno_id </span><span class="hl opt">=</span></li>
<li id="n_508" class="hl">                          <span class="hl opt">( ( </span><span class="hl kwb">$amount </span><span class="hl opt">* </span><span class="hl kwb">$ml </span><span class="hl opt">) &gt; </span><span class="hl num">0 </span><span class="hl opt">)</span></li>
<li id="n_509" class="hl">                          <span class="hl opt">? </span><span class="hl kwb">$fxgain_accno_id</span></li>
<li id="n_510" class="hl">                          <span class="hl opt">: </span><span class="hl kwb">$fxloss_accno_id</span><span class="hl opt">;</span></li>
<li id="n_511" class="hl"></li>
<li id="n_512" class="hl">                        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_513" class="hl">                            INSERT INTO acc_trans </li>
<li id="n_514" class="hl">                                        <span class="hl opt">(</span>trans_id<span class="hl opt">, </span></li>
<li id="n_515" class="hl">                                        chart_id<span class="hl opt">, </span></li>
<li id="n_516" class="hl">                                        amount<span class="hl opt">,</span></li>
<li id="n_517" class="hl">                                        transdate<span class="hl opt">, </span></li>
<li id="n_518" class="hl">                                        fx_transaction<span class="hl opt">, </span></li>
<li id="n_519" class="hl">                                        cleared<span class="hl opt">)</span></li>
<li id="n_520" class="hl">                                 VALUES <span class="hl opt">(?, ?, </span></li>
<li id="n_521" class="hl">                                        <span class="hl opt">?, </span></li>
<li id="n_522" class="hl">                                        <span class="hl opt">?, </span><span class="hl sng">&#39;1&#39;</span><span class="hl opt">, ?)|;</span></li>
<li id="n_523" class="hl"></li>
<li id="n_524" class="hl">                        <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= (</span></li>
<li id="n_525" class="hl">                            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}, </span><span class="hl kwb">$accno_id</span><span class="hl opt">,</span></li>
<li id="n_526" class="hl">                            <span class="hl kwb">$amount </span><span class="hl opt">* </span><span class="hl kwb">$ml</span><span class="hl opt">,</span></li>
<li id="n_527" class="hl">                            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;datepaid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl kwb">$cleared</span></li>
<li id="n_528" class="hl">                        <span class="hl opt">);</span></li>
<li id="n_529" class="hl">                        <span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_530" class="hl">                        <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">)</span></li>
<li id="n_531" class="hl">                          <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_532" class="hl">                    <span class="hl opt">}</span></li>
<li id="n_533" class="hl"></li>
<li id="n_534" class="hl">                    <span class="hl slc"># exchangerate difference</span></li>
<li id="n_535" class="hl">                    <span class="hl kwb">$amount </span><span class="hl opt">= </span><span class="hl kwb">$paid</span><span class="hl opt">{</span>amount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} - </span><span class="hl kwb">$paid</span><span class="hl opt">{</span>fxamount<span class="hl opt">}{</span><span class="hl kwb">$i</span><span class="hl opt">} + </span><span class="hl kwb">$amount</span><span class="hl opt">;</span></li>
<li id="n_536" class="hl"></li>
<li id="n_537" class="hl">                    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_538" class="hl">                        INSERT INTO acc_trans </li>
<li id="n_539" class="hl">                                    <span class="hl opt">(</span>trans_id<span class="hl opt">, </span>chart_id<span class="hl opt">,</span></li>
<li id="n_540" class="hl">                                    amount<span class="hl opt">,</span></li>
<li id="n_541" class="hl">                                    transdate<span class="hl opt">, </span></li>
<li id="n_542" class="hl">                                    fx_transaction<span class="hl opt">, </span></li>
<li id="n_543" class="hl">                                    cleared<span class="hl opt">, </span>source<span class="hl opt">)</span></li>
<li id="n_544" class="hl">                             VALUES <span class="hl opt">(?, (</span>SELECT id </li>
<li id="n_545" class="hl">                                           FROM chart</li>
<li id="n_546" class="hl">                                          WHERE accno </li>
<li id="n_547" class="hl">                                                <span class="hl opt">= ?),</span></li>
<li id="n_548" class="hl">                                    <span class="hl opt">?, ?, </span></li>
<li id="n_549" class="hl">                                    <span class="hl sng">&#39;1&#39;</span><span class="hl opt">, ?, ?)|;</span></li>
<li id="n_550" class="hl"></li>
<li id="n_551" class="hl">                    <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= (</span></li>
<li id="n_552" class="hl">                        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}, </span><span class="hl kwb">$accno</span><span class="hl opt">,</span></li>
<li id="n_553" class="hl">                        <span class="hl kwb">$amount </span><span class="hl opt">* -</span><span class="hl num">1 </span><span class="hl opt">* </span><span class="hl kwb">$ml</span><span class="hl opt">,</span></li>
<li id="n_554" class="hl">                        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;datepaid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">},</span></li>
<li id="n_555" class="hl">                        <span class="hl kwb">$cleared</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;source_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}</span></li>
<li id="n_556" class="hl">                    <span class="hl opt">);</span></li>
<li id="n_557" class="hl">                    <span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_558" class="hl">                    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">)</span></li>
<li id="n_559" class="hl">                      <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_560" class="hl"></li>
<li id="n_561" class="hl">                <span class="hl opt">}</span></li>
<li id="n_562" class="hl"></li>
<li id="n_563" class="hl">                <span class="hl slc"># update exchangerate record</span></li>
<li id="n_564" class="hl">                <span class="hl kwb">$buy  </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;exchangerate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_565" class="hl">                <span class="hl kwb">$sell </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_566" class="hl"></li>
<li id="n_567" class="hl">                <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;vendor&#39;</span> <span class="hl opt">) {</span></li>
<li id="n_568" class="hl">                    <span class="hl kwb">$buy  </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_569" class="hl">                    <span class="hl kwb">$sell </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;exchangerate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_570" class="hl">                <span class="hl opt">}</span></li>
<li id="n_571" class="hl"></li>
<li id="n_572" class="hl">                <span class="hl kwa">if </span><span class="hl opt">( ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaultcurrency<span class="hl opt">} )</span></li>
<li id="n_573" class="hl">                    <span class="hl opt">&amp;&amp; !</span><span class="hl kwb">$exchangerate </span><span class="hl opt">)</span></li>
<li id="n_574" class="hl">                <span class="hl opt">{</span></li>
<li id="n_575" class="hl"></li>
<li id="n_576" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">update_exchangerate</span><span class="hl opt">( </span><span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">},</span></li>
<li id="n_577" class="hl">                        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;datepaid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">},</span></li>
<li id="n_578" class="hl">                        <span class="hl kwb">$buy</span><span class="hl opt">, </span><span class="hl kwb">$sell </span><span class="hl opt">);</span></li>
<li id="n_579" class="hl">                <span class="hl opt">}</span></li>
<li id="n_580" class="hl">            <span class="hl opt">}</span></li>
<li id="n_581" class="hl">        <span class="hl opt">}</span></li>
<li id="n_582" class="hl">    <span class="hl opt">}</span></li>
<li id="n_583" class="hl">    <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$invamount</span><span class="hl opt">-&gt;</span><span class="hl kwd">is_nan</span><span class="hl opt">) {</span></li>
<li id="n_584" class="hl">        <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">rollback</span><span class="hl opt">;</span></li>
<li id="n_585" class="hl">    <span class="hl kwa">return</span><span class="hl opt">;</span></li>
<li id="n_586" class="hl">    <span class="hl opt">}</span></li>
<li id="n_587" class="hl">    <span class="hl slc"># save printed and queued</span></li>
<li id="n_588" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">save_status</span><span class="hl opt">(</span><span class="hl kwb">$dbh</span><span class="hl opt">);</span></li>
<li id="n_589" class="hl"></li>
<li id="n_590" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%audittrail </span><span class="hl opt">= (</span></li>
<li id="n_591" class="hl">        tablename <span class="hl opt">=&gt; </span><span class="hl kwb">$table</span><span class="hl opt">,</span></li>
<li id="n_592" class="hl">        reference <span class="hl opt">=&gt; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invnumber<span class="hl opt">},</span></li>
<li id="n_593" class="hl">        formname  <span class="hl opt">=&gt; </span><span class="hl sng">&#39;transaction&#39;</span><span class="hl opt">,</span></li>
<li id="n_594" class="hl">        action    <span class="hl opt">=&gt; </span><span class="hl sng">&#39;posted&#39;</span><span class="hl opt">,</span></li>
<li id="n_595" class="hl">        id        <span class="hl opt">=&gt; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}</span></li>
<li id="n_596" class="hl">    <span class="hl opt">);</span></li>
<li id="n_597" class="hl"></li>
<li id="n_598" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">audittrail</span><span class="hl opt">( </span><span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">, </span>\<span class="hl kwb">%audittrail </span><span class="hl opt">);</span></li>
<li id="n_599" class="hl"></li>
<li id="n_600" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">save_recurring</span><span class="hl opt">( </span><span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl kwb">$myconfig </span><span class="hl opt">);</span></li>
<li id="n_601" class="hl"></li>
<li id="n_602" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$rc </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">commit</span><span class="hl opt">;</span></li>
<li id="n_603" class="hl"></li>
<li id="n_604" class="hl">    <span class="hl kwb">$rc</span><span class="hl opt">;</span></li>
<li id="n_605" class="hl"></li>
<li id="n_606" class="hl"><span class="hl opt">}</span></li>
<li id="n_607" class="hl"></li>
<li id="n_608" class="hl"><span class="hl kwa">sub </span>delete_transaction <span class="hl opt">{</span></li>
<li id="n_609" class="hl">    <span class="hl kwc">my </span><span class="hl opt">( </span><span class="hl kwb">$self</span><span class="hl opt">, </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form </span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_610" class="hl"></li>
<li id="n_611" class="hl">    <span class="hl slc"># connect to database, turn AutoCommit off</span></li>
<li id="n_612" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$dbh </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>dbh<span class="hl opt">};</span></li>
<li id="n_613" class="hl"></li>
<li id="n_614" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$table </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;customer&#39;</span> <span class="hl opt">) ? </span><span class="hl sng">&#39;ar&#39;</span> <span class="hl opt">: </span><span class="hl sng">&#39;ap&#39;</span><span class="hl opt">;</span></li>
<li id="n_615" class="hl"></li>
<li id="n_616" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%audittrail </span><span class="hl opt">= (</span></li>
<li id="n_617" class="hl">        tablename <span class="hl opt">=&gt; </span><span class="hl kwb">$table</span><span class="hl opt">,</span></li>
<li id="n_618" class="hl">        reference <span class="hl opt">=&gt; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invnumber<span class="hl opt">},</span></li>
<li id="n_619" class="hl">        formname  <span class="hl opt">=&gt; </span><span class="hl sng">&#39;transaction&#39;</span><span class="hl opt">,</span></li>
<li id="n_620" class="hl">        action    <span class="hl opt">=&gt; </span><span class="hl sng">&#39;deleted&#39;</span><span class="hl opt">,</span></li>
<li id="n_621" class="hl">        id        <span class="hl opt">=&gt; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}</span></li>
<li id="n_622" class="hl">    <span class="hl opt">);</span></li>
<li id="n_623" class="hl"></li>
<li id="n_624" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">audittrail</span><span class="hl opt">( </span><span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">, </span>\<span class="hl kwb">%audittrail </span><span class="hl opt">);</span></li>
<li id="n_625" class="hl"></li>
<li id="n_626" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>DELETE FROM <span class="hl kwb">$table </span>WHERE id <span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}|;</span></li>
<li id="n_627" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwa">do</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_628" class="hl"></li>
<li id="n_629" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>DELETE FROM acc_trans WHERE trans_id <span class="hl opt">= ?|;</span></li>
<li id="n_630" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} ) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_631" class="hl"></li>
<li id="n_632" class="hl">    <span class="hl slc"># get spool files</span></li>
<li id="n_633" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>SELECT spoolfile </li>
<li id="n_634" class="hl">                  FROM status</li>
<li id="n_635" class="hl">                 WHERE trans_id <span class="hl opt">= ?</span></li>
<li id="n_636" class="hl">                   AND spoolfile IS NOT NULL<span class="hl opt">|;</span></li>
<li id="n_637" class="hl"></li>
<li id="n_638" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_639" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} ) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_640" class="hl"></li>
<li id="n_641" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$spoolfile</span><span class="hl opt">;</span></li>
<li id="n_642" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;spoolfiles </span><span class="hl opt">= ();</span></li>
<li id="n_643" class="hl"></li>
<li id="n_644" class="hl">    <span class="hl kwa">while </span><span class="hl opt">( (</span><span class="hl kwb">$spoolfile</span><span class="hl opt">) = </span><span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_array </span><span class="hl opt">) {</span></li>
<li id="n_645" class="hl">        <span class="hl kwc">push </span><span class="hl kwb">&#64;spoolfiles</span><span class="hl opt">, </span><span class="hl kwb">$spoolfile</span><span class="hl opt">;</span></li>
<li id="n_646" class="hl">    <span class="hl opt">}</span></li>
<li id="n_647" class="hl"></li>
<li id="n_648" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_649" class="hl"></li>
<li id="n_650" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>DELETE FROM status WHERE trans_id <span class="hl opt">= ?|;</span></li>
<li id="n_651" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} ) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_652" class="hl"></li>
<li id="n_653" class="hl">    <span class="hl slc"># commit</span></li>
<li id="n_654" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$rc </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">commit</span><span class="hl opt">;</span></li>
<li id="n_655" class="hl"></li>
<li id="n_656" class="hl">    <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$rc</span><span class="hl opt">) {</span></li>
<li id="n_657" class="hl">        <span class="hl kwa">foreach </span><span class="hl kwb">$spoolfile </span><span class="hl opt">(</span><span class="hl kwb">&#64;spoolfiles</span><span class="hl opt">) {</span></li>
<li id="n_658" class="hl">            <span class="hl kwc">unlink </span><span class="hl sng">&quot;${LedgerSMB::Sysconfig::spool}/</span><span class="hl ipl">$spoolfile</span><span class="hl sng">&quot;</span> <span class="hl kwa">if </span><span class="hl kwb">$spoolfile</span><span class="hl opt">;</span></li>
<li id="n_659" class="hl">        <span class="hl opt">}</span></li>
<li id="n_660" class="hl">    <span class="hl opt">}</span></li>
<li id="n_661" class="hl"></li>
<li id="n_662" class="hl">    <span class="hl kwb">$rc</span><span class="hl opt">;</span></li>
<li id="n_663" class="hl"><span class="hl opt">}</span></li>
<li id="n_664" class="hl"></li>
<li id="n_665" class="hl"><span class="hl kwa">sub </span>transactions <span class="hl opt">{</span></li>
<li id="n_666" class="hl">    <span class="hl kwc">my </span><span class="hl opt">( </span><span class="hl kwb">$self</span><span class="hl opt">, </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form </span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_667" class="hl"></li>
<li id="n_668" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_669" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$dbh </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>dbh<span class="hl opt">};</span></li>
<li id="n_670" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$null</span><span class="hl opt">;</span></li>
<li id="n_671" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$var</span><span class="hl opt">;</span></li>
<li id="n_672" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$paid    </span><span class="hl opt">= </span><span class="hl sng">&quot;a.paid&quot;</span><span class="hl opt">;</span></li>
<li id="n_673" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ml      </span><span class="hl opt">= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_674" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ARAP    </span><span class="hl opt">= </span><span class="hl sng">&#39;AR&#39;</span><span class="hl opt">;</span></li>
<li id="n_675" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$table   </span><span class="hl opt">= </span><span class="hl sng">&#39;ar&#39;</span><span class="hl opt">;</span></li>
<li id="n_676" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$buysell </span><span class="hl opt">= </span><span class="hl sng">&#39;buy&#39;</span><span class="hl opt">;</span></li>
<li id="n_677" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$acc_trans_join</span><span class="hl opt">;</span></li>
<li id="n_678" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$acc_trans_flds</span><span class="hl opt">;</span></li>
<li id="n_679" class="hl"></li>
<li id="n_680" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;vendor&#39;</span> <span class="hl opt">) {</span></li>
<li id="n_681" class="hl">        <span class="hl kwb">$ml      </span><span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_682" class="hl">        <span class="hl kwb">$ARAP    </span><span class="hl opt">= </span><span class="hl sng">&#39;AP&#39;</span><span class="hl opt">;</span></li>
<li id="n_683" class="hl">        <span class="hl kwb">$table   </span><span class="hl opt">= </span><span class="hl sng">&#39;ap&#39;</span><span class="hl opt">;</span></li>
<li id="n_684" class="hl">        <span class="hl kwb">$buysell </span><span class="hl opt">= </span><span class="hl sng">&#39;sell&#39;</span><span class="hl opt">;</span></li>
<li id="n_685" class="hl">    <span class="hl opt">}</span></li>
<li id="n_686" class="hl"></li>
<li id="n_687" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdatefrom<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdateto<span class="hl opt">} ) =</span></li>
<li id="n_688" class="hl">      <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">from_to</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>year<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>month<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>interval<span class="hl opt">} )</span></li>
<li id="n_689" class="hl">      <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>year<span class="hl opt">} &amp;&amp; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>month<span class="hl opt">};</span></li>
<li id="n_690" class="hl"></li>
<li id="n_691" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;paidargs </span><span class="hl opt">= ();</span></li>
<li id="n_692" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>outstanding<span class="hl opt">} ) {</span></li>
<li id="n_693" class="hl">        <span class="hl kwb">$paid </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_694" class="hl">            SELECT SUM<span class="hl opt">(</span>ac<span class="hl opt">.</span>amount<span class="hl opt">) * -</span><span class="hl num">1 </span><span class="hl opt">* </span><span class="hl kwb">$ml</span></li>
<li id="n_695" class="hl">              FROM acc_trans ac</li>
<li id="n_696" class="hl">              JOIN chart c ON <span class="hl opt">(</span>c<span class="hl opt">.</span>id <span class="hl opt">= </span>ac<span class="hl opt">.</span>chart_id<span class="hl opt">)</span></li>
<li id="n_697" class="hl">             WHERE ac<span class="hl opt">.</span>trans_id <span class="hl opt">= </span>a<span class="hl opt">.</span>id</li>
<li id="n_698" class="hl">                   AND <span class="hl opt">(</span>c<span class="hl opt">.</span><span class="hl kwc">link </span>LIKE <span class="hl sng">&#39;</span><span class="hl ipl">%$</span><span class="hl sng">{ARAP}_paid%&#39;</span> </li>
<li id="n_699" class="hl">                   OR c<span class="hl opt">.</span><span class="hl kwc">link </span><span class="hl opt">= </span><span class="hl sng">&#39;&#39;</span><span class="hl opt">)|;</span></li>
<li id="n_700" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdateto<span class="hl opt">} ) {</span></li>
<li id="n_701" class="hl">            <span class="hl kwb">$paid </span><span class="hl opt">.= </span>qq<span class="hl opt">|</span></li>
<li id="n_702" class="hl">                   AND ac<span class="hl opt">.</span>transdate <span class="hl opt">&lt;= ?|;</span></li>
<li id="n_703" class="hl">            <span class="hl kwc">push </span><span class="hl kwb">&#64;paidargs</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdateto<span class="hl opt">};</span></li>
<li id="n_704" class="hl">        <span class="hl opt">}</span></li>
<li id="n_705" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>summary<span class="hl opt">} = </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_706" class="hl">    <span class="hl opt">}</span></li>
<li id="n_707" class="hl"></li>
<li id="n_708" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( !</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>summary<span class="hl opt">} ) {</span></li>
<li id="n_709" class="hl">        <span class="hl kwb">$acc_trans_flds </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_710" class="hl">            <span class="hl opt">, </span>c<span class="hl opt">.</span>accno<span class="hl opt">, </span>ac<span class="hl opt">.</span>source<span class="hl opt">,</span></li>
<li id="n_711" class="hl">            pr<span class="hl opt">.</span>projectnumber<span class="hl opt">, </span>ac<span class="hl opt">.</span>memo AS description<span class="hl opt">,</span></li>
<li id="n_712" class="hl">            ac<span class="hl opt">.</span>amount AS linetotal<span class="hl opt">,</span></li>
<li id="n_713" class="hl">            i<span class="hl opt">.</span>description AS linedescription<span class="hl opt">|;</span></li>
<li id="n_714" class="hl"></li>
<li id="n_715" class="hl">        <span class="hl kwb">$acc_trans_join </span><span class="hl opt">= </span>qq<span class="hl opt">| </span></li>
<li id="n_716" class="hl">                 JOIN acc_trans ac ON <span class="hl opt">(</span>a<span class="hl opt">.</span>id <span class="hl opt">= </span>ac<span class="hl opt">.</span>trans_id<span class="hl opt">)</span></li>
<li id="n_717" class="hl">                 JOIN chart c ON <span class="hl opt">(</span>c<span class="hl opt">.</span>id <span class="hl opt">= </span>ac<span class="hl opt">.</span>chart_id<span class="hl opt">)</span></li>
<li id="n_718" class="hl">            LEFT JOIN project pr ON <span class="hl opt">(</span>pr<span class="hl opt">.</span>id <span class="hl opt">= </span>ac<span class="hl opt">.</span>project_id<span class="hl opt">)</span></li>
<li id="n_719" class="hl">            LEFT JOIN invoice i ON <span class="hl opt">(</span>i<span class="hl opt">.</span>id <span class="hl opt">= </span>ac<span class="hl opt">.</span>invoice_id<span class="hl opt">)|;</span></li>
<li id="n_720" class="hl">    <span class="hl opt">}</span></li>
<li id="n_721" class="hl"></li>
<li id="n_722" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_723" class="hl">           SELECT a<span class="hl opt">.</span>id<span class="hl opt">, </span>a<span class="hl opt">.</span>invnumber<span class="hl opt">, </span>a<span class="hl opt">.</span>ordnumber<span class="hl opt">, </span>a<span class="hl opt">.</span>transdate<span class="hl opt">,</span></li>
<li id="n_724" class="hl">                  a<span class="hl opt">.</span>duedate<span class="hl opt">, </span>a<span class="hl opt">.</span>netamount<span class="hl opt">, </span>a<span class="hl opt">.</span>amount<span class="hl opt">, (</span><span class="hl kwb">$paid</span><span class="hl opt">) </span>AS paid<span class="hl opt">,</span></li>
<li id="n_725" class="hl">                  a<span class="hl opt">.</span>invoice<span class="hl opt">, </span>a<span class="hl opt">.</span>datepaid<span class="hl opt">, </span>a<span class="hl opt">.</span>terms<span class="hl opt">, </span>a<span class="hl opt">.</span>notes<span class="hl opt">,</span></li>
<li id="n_726" class="hl">                  a<span class="hl opt">.</span>shipvia<span class="hl opt">, </span>a<span class="hl opt">.</span>shippingpoint<span class="hl opt">, </span>e<span class="hl opt">.</span>name AS employee<span class="hl opt">, </span></li>
<li id="n_727" class="hl">                  vc<span class="hl opt">.</span>name<span class="hl opt">,</span></li>
<li id="n_728" class="hl">                  a<span class="hl opt">.</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}</span>_id<span class="hl opt">, </span>a<span class="hl opt">.</span>till<span class="hl opt">, </span>m<span class="hl opt">.</span>name AS manager<span class="hl opt">, </span>a<span class="hl opt">.</span>curr<span class="hl opt">,</span></li>
<li id="n_729" class="hl">                  ex<span class="hl opt">.</span><span class="hl kwb">$buysell </span>AS exchangerate<span class="hl opt">, </span></li>
<li id="n_730" class="hl">                  d<span class="hl opt">.</span>description AS department<span class="hl opt">, </span></li>
<li id="n_731" class="hl">                  a<span class="hl opt">.</span>ponumber <span class="hl kwb">$acc_trans_flds</span></li>
<li id="n_732" class="hl">             FROM <span class="hl kwb">$table </span>a</li>
<li id="n_733" class="hl">             JOIN <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span>vc ON <span class="hl opt">(</span>a<span class="hl opt">.</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}</span>_id <span class="hl opt">= </span>vc<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_734" class="hl">        LEFT JOIN employee e ON <span class="hl opt">(</span>a<span class="hl opt">.</span>employee_id <span class="hl opt">= </span>e<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_735" class="hl">        LEFT JOIN employee m ON <span class="hl opt">(</span>e<span class="hl opt">.</span>managerid <span class="hl opt">= </span>m<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_736" class="hl">        LEFT JOIN exchangerate ex ON <span class="hl opt">(</span>ex<span class="hl opt">.</span>curr <span class="hl opt">= </span>a<span class="hl opt">.</span>curr</li>
<li id="n_737" class="hl">                  AND ex<span class="hl opt">.</span>transdate <span class="hl opt">= </span>a<span class="hl opt">.</span>transdate<span class="hl opt">)</span></li>
<li id="n_738" class="hl">        LEFT JOIN department d ON <span class="hl opt">(</span>a<span class="hl opt">.</span>department_id <span class="hl opt">= </span>d<span class="hl opt">.</span>id<span class="hl opt">) </span></li>
<li id="n_739" class="hl">        <span class="hl kwb">$acc_trans_join</span><span class="hl opt">|;</span></li>
<li id="n_740" class="hl"></li>
<li id="n_741" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%ordinal </span><span class="hl opt">= (</span></li>
<li id="n_742" class="hl">        id            <span class="hl opt">=&gt; </span><span class="hl num">1</span><span class="hl opt">,</span></li>
<li id="n_743" class="hl">        invnumber     <span class="hl opt">=&gt; </span><span class="hl num">2</span><span class="hl opt">,</span></li>
<li id="n_744" class="hl">        ordnumber     <span class="hl opt">=&gt; </span><span class="hl num">3</span><span class="hl opt">,</span></li>
<li id="n_745" class="hl">        transdate     <span class="hl opt">=&gt; </span><span class="hl num">4</span><span class="hl opt">,</span></li>
<li id="n_746" class="hl">        duedate       <span class="hl opt">=&gt; </span><span class="hl num">5</span><span class="hl opt">,</span></li>
<li id="n_747" class="hl">        datepaid      <span class="hl opt">=&gt; </span><span class="hl num">10</span><span class="hl opt">,</span></li>
<li id="n_748" class="hl">        shipvia       <span class="hl opt">=&gt; </span><span class="hl num">13</span><span class="hl opt">,</span></li>
<li id="n_749" class="hl">        shippingpoint <span class="hl opt">=&gt; </span><span class="hl num">14</span><span class="hl opt">,</span></li>
<li id="n_750" class="hl">        employee      <span class="hl opt">=&gt; </span><span class="hl num">15</span><span class="hl opt">,</span></li>
<li id="n_751" class="hl">        name          <span class="hl opt">=&gt; </span><span class="hl num">16</span><span class="hl opt">,</span></li>
<li id="n_752" class="hl">        manager       <span class="hl opt">=&gt; </span><span class="hl num">19</span><span class="hl opt">,</span></li>
<li id="n_753" class="hl">        curr          <span class="hl opt">=&gt; </span><span class="hl num">20</span><span class="hl opt">,</span></li>
<li id="n_754" class="hl">        department    <span class="hl opt">=&gt; </span><span class="hl num">22</span><span class="hl opt">,</span></li>
<li id="n_755" class="hl">        ponumber      <span class="hl opt">=&gt; </span><span class="hl num">23</span><span class="hl opt">,</span></li>
<li id="n_756" class="hl">        accno         <span class="hl opt">=&gt; </span><span class="hl num">24</span><span class="hl opt">,</span></li>
<li id="n_757" class="hl">        source        <span class="hl opt">=&gt; </span><span class="hl num">25</span><span class="hl opt">,</span></li>
<li id="n_758" class="hl">        project       <span class="hl opt">=&gt; </span><span class="hl num">26</span><span class="hl opt">,</span></li>
<li id="n_759" class="hl">        description   <span class="hl opt">=&gt; </span><span class="hl num">27</span></li>
<li id="n_760" class="hl">    <span class="hl opt">);</span></li>
<li id="n_761" class="hl"></li>
<li id="n_762" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;a </span><span class="hl opt">= ( </span>transdate<span class="hl opt">, </span>invnumber<span class="hl opt">, </span>name <span class="hl opt">);</span></li>
<li id="n_763" class="hl">    <span class="hl kwc">push </span><span class="hl kwb">&#64;a</span><span class="hl opt">, </span><span class="hl sng">&quot;employee&quot;</span> <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>l_employee<span class="hl opt">};</span></li>
<li id="n_764" class="hl">    <span class="hl kwc">push </span><span class="hl kwb">&#64;a</span><span class="hl opt">, </span><span class="hl sng">&quot;manager&quot;</span>  <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>l_manager<span class="hl opt">};</span></li>
<li id="n_765" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sortorder </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">sort_order</span><span class="hl opt">( </span>\<span class="hl kwb">&#64;a</span><span class="hl opt">, </span>\<span class="hl kwb">%ordinal </span><span class="hl opt">);</span></li>
<li id="n_766" class="hl"></li>
<li id="n_767" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$where </span><span class="hl opt">= </span><span class="hl sng">&quot;1 = 1&quot;</span><span class="hl opt">;</span></li>
<li id="n_768" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">} ) {</span></li>
<li id="n_769" class="hl">        <span class="hl kwb">$where </span><span class="hl opt">.= </span>qq<span class="hl opt">| </span>AND a<span class="hl opt">.</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}</span>_id <span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">}|;</span></li>
<li id="n_770" class="hl">    <span class="hl opt">}</span></li>
<li id="n_771" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_772" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} } ) {</span></li>
<li id="n_773" class="hl">            <span class="hl kwb">$var </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">like</span><span class="hl opt">( </span><span class="hl kwc">lc </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} } ) );</span></li>
<li id="n_774" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND lower(vc.name) LIKE </span><span class="hl ipl">$var</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_775" class="hl">        <span class="hl opt">}</span></li>
<li id="n_776" class="hl">    <span class="hl opt">}</span></li>
<li id="n_777" class="hl"></li>
<li id="n_778" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(department employee)</span><span class="hl opt">) {</span></li>
<li id="n_779" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} ) {</span></li>
<li id="n_780" class="hl">            <span class="hl opt">( </span><span class="hl kwb">$null</span><span class="hl opt">, </span><span class="hl kwb">$var </span><span class="hl opt">) = </span><span class="hl kwc">split </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">};</span></li>
<li id="n_781" class="hl">            <span class="hl kwb">$var </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">(</span><span class="hl kwb">$var</span><span class="hl opt">);</span></li>
<li id="n_782" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND a.${_}_id = </span><span class="hl ipl">$var</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_783" class="hl">        <span class="hl opt">}</span></li>
<li id="n_784" class="hl">    <span class="hl opt">}</span></li>
<li id="n_785" class="hl"></li>
<li id="n_786" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(invnumber ordnumber)</span><span class="hl opt">) {</span></li>
<li id="n_787" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} ) {</span></li>
<li id="n_788" class="hl">            <span class="hl kwb">$var </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">like</span><span class="hl opt">( </span><span class="hl kwc">lc </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} ) );</span></li>
<li id="n_789" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND lower(a.</span><span class="hl ipl">$_</span><span class="hl sng">) LIKE </span><span class="hl ipl">$var</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_790" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">open</span><span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>closed<span class="hl opt">} = </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_791" class="hl">        <span class="hl opt">}</span></li>
<li id="n_792" class="hl">    <span class="hl opt">}</span></li>
<li id="n_793" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>partsid<span class="hl opt">} ) {</span></li>
<li id="n_794" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$partsid </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>partsid<span class="hl opt">} );</span></li>
<li id="n_795" class="hl">        <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND a.id IN (select trans_id FROM invoice</span></li>
<li id="n_796" class="hl"><span class="hl sng">            WHERE parts_id = </span><span class="hl ipl">$partsid</span><span class="hl sng">)&quot;</span><span class="hl opt">;</span></li>
<li id="n_797" class="hl">    <span class="hl opt">}</span></li>
<li id="n_798" class="hl"></li>
<li id="n_799" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(ponumber shipvia notes)</span><span class="hl opt">) {</span></li>
<li id="n_800" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} ) {</span></li>
<li id="n_801" class="hl">            <span class="hl kwb">$var </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">like</span><span class="hl opt">( </span><span class="hl kwc">lc </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} ) );</span></li>
<li id="n_802" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND lower(a.</span><span class="hl ipl">$_</span><span class="hl sng">) LIKE </span><span class="hl ipl">$var</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_803" class="hl">        <span class="hl opt">}</span></li>
<li id="n_804" class="hl">    <span class="hl opt">}</span></li>
<li id="n_805" class="hl"></li>
<li id="n_806" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} ) {</span></li>
<li id="n_807" class="hl">        <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$acc_trans_flds</span><span class="hl opt">) {</span></li>
<li id="n_808" class="hl">            <span class="hl kwb">$var </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">like</span><span class="hl opt">( </span><span class="hl kwc">lc </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} ) );</span></li>
<li id="n_809" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND lower(ac.memo) LIKE </span><span class="hl ipl">$var</span></li>
<li id="n_810" class="hl"><span class="hl sng">            OR lower(i.description) LIKE </span><span class="hl ipl">$var</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_811" class="hl">        <span class="hl opt">}</span></li>
<li id="n_812" class="hl">        <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_813" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND a.id = 0&quot;</span><span class="hl opt">;</span></li>
<li id="n_814" class="hl">        <span class="hl opt">}</span></li>
<li id="n_815" class="hl">    <span class="hl opt">}</span></li>
<li id="n_816" class="hl"></li>
<li id="n_817" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>source<span class="hl opt">} ) {</span></li>
<li id="n_818" class="hl">        <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$acc_trans_flds</span><span class="hl opt">) {</span></li>
<li id="n_819" class="hl">            <span class="hl kwb">$var </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">like</span><span class="hl opt">( </span><span class="hl kwc">lc </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>source<span class="hl opt">} ) );</span></li>
<li id="n_820" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND lower(ac.source) LIKE </span><span class="hl ipl">$var</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_821" class="hl">        <span class="hl opt">}</span></li>
<li id="n_822" class="hl">        <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_823" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND a.id = 0&quot;</span><span class="hl opt">;</span></li>
<li id="n_824" class="hl">        <span class="hl opt">}</span></li>
<li id="n_825" class="hl">    <span class="hl opt">}</span></li>
<li id="n_826" class="hl"></li>
<li id="n_827" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$transdatefrom </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdatefrom<span class="hl opt">} );</span></li>
<li id="n_828" class="hl">    <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND a.transdate &gt;= </span><span class="hl ipl">$transdatefrom</span><span class="hl sng">&quot;</span></li>
<li id="n_829" class="hl">      <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdatefrom<span class="hl opt">};</span></li>
<li id="n_830" class="hl"></li>
<li id="n_831" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$transdateto </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdateto<span class="hl opt">} );</span></li>
<li id="n_832" class="hl">    <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND a.transdate &lt;= </span><span class="hl ipl">$transdateto</span><span class="hl sng">&quot;</span> <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdateto<span class="hl opt">};</span></li>
<li id="n_833" class="hl"></li>
<li id="n_834" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">open</span><span class="hl opt">} || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>closed<span class="hl opt">} ) {</span></li>
<li id="n_835" class="hl">        <span class="hl kwa">unless </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">open</span><span class="hl opt">} &amp;&amp; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>closed<span class="hl opt">} ) {</span></li>
<li id="n_836" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND a.amount != a.paid&quot;</span> <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">open</span><span class="hl opt">} );</span></li>
<li id="n_837" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND a.amount = a.paid&quot;</span>  <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>closed<span class="hl opt">} );</span></li>
<li id="n_838" class="hl">        <span class="hl opt">}</span></li>
<li id="n_839" class="hl">    <span class="hl opt">}</span></li>
<li id="n_840" class="hl"></li>
<li id="n_841" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>till<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl sng">&quot;&quot;</span> <span class="hl opt">) {</span></li>
<li id="n_842" class="hl">        <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND a.invoice = &#39;1&#39;</span></li>
<li id="n_843" class="hl"><span class="hl sng">                    AND a.till = </span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{till}&quot;</span><span class="hl opt">;</span></li>
<li id="n_844" class="hl"></li>
<li id="n_845" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;{</span><span class="hl kwa">role</span><span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;user&#39;</span> <span class="hl opt">) {</span></li>
<li id="n_846" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$login </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>login<span class="hl opt">} );</span></li>
<li id="n_847" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND e.login = </span><span class="hl ipl">$login</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_848" class="hl">        <span class="hl opt">}</span></li>
<li id="n_849" class="hl">    <span class="hl opt">}</span></li>
<li id="n_850" class="hl"></li>
<li id="n_851" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$ARAP</span><span class="hl opt">} ) {</span></li>
<li id="n_852" class="hl">        <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$accno</span><span class="hl opt">) = </span><span class="hl kwc">split </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$ARAP</span><span class="hl opt">};</span></li>
<li id="n_853" class="hl">        <span class="hl kwb">$accno </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">(</span><span class="hl kwb">$accno</span><span class="hl opt">);</span></li>
<li id="n_854" class="hl">        <span class="hl kwb">$where </span><span class="hl opt">.= </span>qq<span class="hl opt">|</span></li>
<li id="n_855" class="hl">            AND a<span class="hl opt">.</span>id IN <span class="hl opt">(</span>SELECT ac<span class="hl opt">.</span>trans_id</li>
<li id="n_856" class="hl">                           FROM acc_trans ac</li>
<li id="n_857" class="hl">                           JOIN chart c ON <span class="hl opt">(</span>c<span class="hl opt">.</span>id <span class="hl opt">= </span>ac<span class="hl opt">.</span>chart_id<span class="hl opt">)</span></li>
<li id="n_858" class="hl">                          WHERE a<span class="hl opt">.</span>id <span class="hl opt">= </span>ac<span class="hl opt">.</span>trans_id</li>
<li id="n_859" class="hl">                                AND c<span class="hl opt">.</span>accno <span class="hl opt">= </span><span class="hl kwb">$accno</span><span class="hl opt">)|;</span></li>
<li id="n_860" class="hl">    <span class="hl opt">}</span></li>
<li id="n_861" class="hl"></li>
<li id="n_862" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} ) {</span></li>
<li id="n_863" class="hl">        <span class="hl kwb">$var </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">like</span><span class="hl opt">( </span><span class="hl kwc">lc </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} ) );</span></li>
<li id="n_864" class="hl">        <span class="hl kwb">$where </span><span class="hl opt">.= </span>qq<span class="hl opt">|</span></li>
<li id="n_865" class="hl">            AND <span class="hl opt">(</span>a<span class="hl opt">.</span>id IN <span class="hl opt">(</span>SELECT DISTINCT trans_id</li>
<li id="n_866" class="hl">                            FROM acc_trans</li>
<li id="n_867" class="hl">                           WHERE lower<span class="hl opt">(</span>memo<span class="hl opt">) </span>LIKE <span class="hl kwb">$var</span><span class="hl opt">)</span></li>
<li id="n_868" class="hl">                                 OR a<span class="hl opt">.</span>id IN </li>
<li id="n_869" class="hl">                                 <span class="hl opt">(</span>SELECT DISTINCT trans_id</li>
<li id="n_870" class="hl">                                             FROM invoice</li>
<li id="n_871" class="hl">                                            WHERE lower<span class="hl opt">(</span>description<span class="hl opt">)</span></li>
<li id="n_872" class="hl">                                                  LIKE <span class="hl kwb">$var</span><span class="hl opt">))|;</span></li>
<li id="n_873" class="hl">    <span class="hl opt">}</span></li>
<li id="n_874" class="hl"></li>
<li id="n_875" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">.= </span><span class="hl sng">&quot;WHERE </span><span class="hl ipl">$where</span></li>
<li id="n_876" class="hl"><span class="hl sng">            ORDER BY </span><span class="hl ipl">$sortorder</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_877" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_878" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;paidargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_879" class="hl"></li>
<li id="n_880" class="hl">    <span class="hl kwa">while </span><span class="hl opt">( </span><span class="hl kwc">my </span><span class="hl kwb">$ref </span><span class="hl opt">= </span><span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_hashref</span><span class="hl opt">(</span>NAME_lc<span class="hl opt">) ) {</span></li>
<li id="n_881" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">db_parse_numeric</span><span class="hl opt">(</span>sth <span class="hl opt">=&gt; </span><span class="hl kwb">$sth</span><span class="hl opt">, </span>hashref <span class="hl opt">=&gt; </span><span class="hl kwb">$ref</span><span class="hl opt">);</span></li>
<li id="n_882" class="hl">        <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">} = </span><span class="hl num">1 </span><span class="hl kwa">unless </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">};</span></li>
<li id="n_883" class="hl"></li>
<li id="n_884" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>linetotal<span class="hl opt">} &lt;= </span><span class="hl num">0 </span><span class="hl opt">) {</span></li>
<li id="n_885" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>debit<span class="hl opt">}  = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>linetotal<span class="hl opt">} * -</span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_886" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>credit<span class="hl opt">} = </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_887" class="hl">        <span class="hl opt">}</span></li>
<li id="n_888" class="hl">        <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_889" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>debit<span class="hl opt">}  = </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_890" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>credit<span class="hl opt">} = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>linetotal<span class="hl opt">};</span></li>
<li id="n_891" class="hl">        <span class="hl opt">}</span></li>
<li id="n_892" class="hl"></li>
<li id="n_893" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>invoice<span class="hl opt">} ) {</span></li>
<li id="n_894" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} ||= </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>linedescription<span class="hl opt">};</span></li>
<li id="n_895" class="hl">        <span class="hl opt">}</span></li>
<li id="n_896" class="hl"></li>
<li id="n_897" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>outstanding<span class="hl opt">} ) {</span></li>
<li id="n_898" class="hl">            <span class="hl kwa">next</span></li>
<li id="n_899" class="hl">              <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">( </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>amount<span class="hl opt">}, </span><span class="hl num">2 </span><span class="hl opt">) ==</span></li>
<li id="n_900" class="hl">              <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">round_amount</span><span class="hl opt">( </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>paid<span class="hl opt">}, </span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_901" class="hl">        <span class="hl opt">}</span></li>
<li id="n_902" class="hl"></li>
<li id="n_903" class="hl">        <span class="hl kwc">push </span><span class="hl opt">&#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">} }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_904" class="hl">    <span class="hl opt">}</span></li>
<li id="n_905" class="hl"></li>
<li id="n_906" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_907" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">commit</span><span class="hl opt">;</span></li>
<li id="n_908" class="hl"><span class="hl opt">}</span></li>
<li id="n_909" class="hl"></li>
<li id="n_910" class="hl"><span class="hl slc"># this is used in IS, IR to retrieve the name</span></li>
<li id="n_911" class="hl"><span class="hl kwa">sub </span>get_name <span class="hl opt">{</span></li>
<li id="n_912" class="hl"></li>
<li id="n_913" class="hl">    <span class="hl kwc">my </span><span class="hl opt">( </span><span class="hl kwb">$self</span><span class="hl opt">, </span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form </span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_914" class="hl"></li>
<li id="n_915" class="hl">    <span class="hl slc"># sanitize $form-&gt;{vc}</span></li>
<li id="n_916" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl sng">&#39;customer&#39;</span> <span class="hl opt">) {</span></li>
<li id="n_917" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} = </span><span class="hl sng">&#39;vendor&#39;</span><span class="hl opt">;</span></li>
<li id="n_918" class="hl">    <span class="hl opt">}</span></li>
<li id="n_919" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_920" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} = </span><span class="hl sng">&#39;customer&#39;</span><span class="hl opt">;</span></li>
<li id="n_921" class="hl">    <span class="hl opt">}</span></li>
<li id="n_922" class="hl"></li>
<li id="n_923" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_924" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$dbh </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>dbh<span class="hl opt">};</span></li>
<li id="n_925" class="hl"></li>
<li id="n_926" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$dateformat </span><span class="hl opt">= </span><span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;{</span>dateformat<span class="hl opt">};</span></li>
<li id="n_927" class="hl"></li>
<li id="n_928" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;{</span>dateformat<span class="hl opt">} !~ </span><span class="hl kwd">/^y/ </span><span class="hl opt">) {</span></li>
<li id="n_929" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">&#64;a </span><span class="hl opt">= </span><span class="hl kwc">split </span><span class="hl kwd">/\W/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">};</span></li>
<li id="n_930" class="hl">        <span class="hl kwb">$dateformat </span><span class="hl opt">.= </span><span class="hl sng">&quot;yy&quot;</span> <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwc">length </span><span class="hl kwb">$a</span><span class="hl opt">[</span><span class="hl num">2</span><span class="hl opt">] &gt; </span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_931" class="hl">    <span class="hl opt">}</span></li>
<li id="n_932" class="hl"></li>
<li id="n_933" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">} !~ </span><span class="hl kwd">/\W/ </span><span class="hl opt">) {</span></li>
<li id="n_934" class="hl">        <span class="hl kwb">$dateformat </span><span class="hl opt">= </span><span class="hl sng">&#39;yyyymmdd&#39;</span><span class="hl opt">;</span></li>
<li id="n_935" class="hl">    <span class="hl opt">}</span></li>
<li id="n_936" class="hl"></li>
<li id="n_937" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$duedate</span><span class="hl opt">;</span></li>
<li id="n_938" class="hl"></li>
<li id="n_939" class="hl">    <span class="hl kwb">$dateformat </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">(</span><span class="hl kwb">$dateformat</span><span class="hl opt">);</span></li>
<li id="n_940" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$tdate </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">} );</span></li>
<li id="n_941" class="hl">    <span class="hl kwb">$duedate </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">} )</span></li>
<li id="n_942" class="hl">      <span class="hl opt">? </span><span class="hl sng">&quot;to_date(</span><span class="hl ipl">$tdate</span><span class="hl sng">, </span><span class="hl ipl">$dateformat</span><span class="hl sng">) </span></li>
<li id="n_943" class="hl"><span class="hl sng">            + c.terms&quot;</span></li>
<li id="n_944" class="hl">      <span class="hl opt">: </span><span class="hl sng">&quot;current_date + c.terms&quot;</span><span class="hl opt">;</span></li>
<li id="n_945" class="hl"></li>
<li id="n_946" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">} *= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_947" class="hl"></li>
<li id="n_948" class="hl">    <span class="hl slc"># get customer/vendor</span></li>
<li id="n_949" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_950" class="hl">           SELECT c<span class="hl opt">.</span>name AS <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}, </span>c<span class="hl opt">.</span>discount<span class="hl opt">, </span>c<span class="hl opt">.</span>creditlimit<span class="hl opt">, </span></li>
<li id="n_951" class="hl">                  c<span class="hl opt">.</span>terms<span class="hl opt">, </span>c<span class="hl opt">.</span>email<span class="hl opt">, </span>c<span class="hl opt">.</span>cc<span class="hl opt">, </span>c<span class="hl opt">.</span>bcc<span class="hl opt">, </span>c<span class="hl opt">.</span>taxincluded<span class="hl opt">,</span></li>
<li id="n_952" class="hl">                  c<span class="hl opt">.</span>address1<span class="hl opt">, </span>c<span class="hl opt">.</span>address2<span class="hl opt">, </span>c<span class="hl opt">.</span>city<span class="hl opt">, </span>c<span class="hl opt">.</span><span class="hl kwc">state</span><span class="hl opt">,</span></li>
<li id="n_953" class="hl">                  c<span class="hl opt">.</span>zipcode<span class="hl opt">, </span>c<span class="hl opt">.</span>country<span class="hl opt">, </span>c<span class="hl opt">.</span>curr AS currency<span class="hl opt">, </span></li>
<li id="n_954" class="hl">                  c<span class="hl opt">.</span>language_code<span class="hl opt">, </span><span class="hl kwb">$duedate </span>AS duedate<span class="hl opt">, </span></li>
<li id="n_955" class="hl">                  c<span class="hl opt">.</span>notes AS intnotes<span class="hl opt">,</span></li>
<li id="n_956" class="hl">              b<span class="hl opt">.</span>discount AS tradediscount<span class="hl opt">, </span></li>
<li id="n_957" class="hl">                  b<span class="hl opt">.</span>description AS business<span class="hl opt">,</span></li>
<li id="n_958" class="hl">                  e<span class="hl opt">.</span>name AS employee<span class="hl opt">, </span>e<span class="hl opt">.</span>id AS employee_id</li>
<li id="n_959" class="hl">             FROM <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span>c</li>
<li id="n_960" class="hl">        LEFT JOIN business b ON <span class="hl opt">(</span>b<span class="hl opt">.</span>id <span class="hl opt">= </span>c<span class="hl opt">.</span>business_id<span class="hl opt">)</span></li>
<li id="n_961" class="hl">        LEFT JOIN employee e ON <span class="hl opt">(</span>e<span class="hl opt">.</span>id <span class="hl opt">= </span>c<span class="hl opt">.</span>employee_id<span class="hl opt">)</span></li>
<li id="n_962" class="hl">            WHERE c<span class="hl opt">.</span>id <span class="hl opt">= ?|;</span></li>
<li id="n_963" class="hl"></li>
<li id="n_964" class="hl">    <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">} );</span></li>
<li id="n_965" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_966" class="hl"></li>
<li id="n_967" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_968" class="hl"></li>
<li id="n_969" class="hl">    <span class="hl kwb">$ref </span><span class="hl opt">= </span><span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_hashref</span><span class="hl opt">(</span>NAME_lc<span class="hl opt">);</span></li>
<li id="n_970" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">db_parse_numeric</span><span class="hl opt">(</span>sth <span class="hl opt">=&gt; </span><span class="hl kwb">$sth</span><span class="hl opt">, </span>hashref <span class="hl opt">=&gt; </span><span class="hl kwb">$ref</span><span class="hl opt">);</span></li>
<li id="n_971" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} ) {</span></li>
<li id="n_972" class="hl">        <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(currency employee employee_id intnotes)</span><span class="hl opt">) {</span></li>
<li id="n_973" class="hl">            <span class="hl kwc">delete </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">};</span></li>
<li id="n_974" class="hl">        <span class="hl opt">}</span></li>
<li id="n_975" class="hl">    <span class="hl opt">}</span></li>
<li id="n_976" class="hl"></li>
<li id="n_977" class="hl">    <span class="hl kwa">for </span><span class="hl opt">( </span><span class="hl kwc">keys </span><span class="hl kwb">%$ref </span><span class="hl opt">) { </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} }</span></li>
<li id="n_978" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_979" class="hl"></li>
<li id="n_980" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$buysell </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;customer&#39;</span> <span class="hl opt">) ? </span><span class="hl sng">&quot;buy&quot;</span> <span class="hl opt">: </span><span class="hl sng">&quot;sell&quot;</span><span class="hl opt">;</span></li>
<li id="n_981" class="hl"></li>
<li id="n_982" class="hl">    <span class="hl slc"># if no currency use defaultcurrency</span></li>
<li id="n_983" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} =</span></li>
<li id="n_984" class="hl">      <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} )</span></li>
<li id="n_985" class="hl">      <span class="hl opt">? </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">}</span></li>
<li id="n_986" class="hl">      <span class="hl opt">: </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaultcurrency<span class="hl opt">};</span></li>
<li id="n_987" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">} = </span><span class="hl num">0</span></li>
<li id="n_988" class="hl">      <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaultcurrency<span class="hl opt">};</span></li>
<li id="n_989" class="hl"></li>
<li id="n_990" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">}</span></li>
<li id="n_991" class="hl">        <span class="hl opt">&amp;&amp; ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaultcurrency<span class="hl opt">} ) )</span></li>
<li id="n_992" class="hl">    <span class="hl opt">{</span></li>
<li id="n_993" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">} =</span></li>
<li id="n_994" class="hl">          <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">get_exchangerate</span><span class="hl opt">( </span><span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">},</span></li>
<li id="n_995" class="hl">            <span class="hl kwb">$buysell </span><span class="hl opt">);</span></li>
<li id="n_996" class="hl">    <span class="hl opt">}</span></li>
<li id="n_997" class="hl"></li>
<li id="n_998" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>forex<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">};</span></li>
<li id="n_999" class="hl"></li>
<li id="n_1000" class="hl">    <span class="hl slc"># if no employee, default to login</span></li>
<li id="n_1001" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>employee<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>employee_id<span class="hl opt">} ) = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">get_employee</span><span class="hl opt">(</span><span class="hl kwb">$dbh</span><span class="hl opt">)</span></li>
<li id="n_1002" class="hl">      <span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>employee_id<span class="hl opt">};</span></li>
<li id="n_1003" class="hl"></li>
<li id="n_1004" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$arap </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;customer&#39;</span> <span class="hl opt">) ? </span><span class="hl sng">&#39;ar&#39;</span> <span class="hl opt">: </span><span class="hl sng">&#39;ap&#39;</span><span class="hl opt">;</span></li>
<li id="n_1005" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ARAP </span><span class="hl opt">= </span><span class="hl kwc">uc </span><span class="hl kwb">$arap</span><span class="hl opt">;</span></li>
<li id="n_1006" class="hl"></li>
<li id="n_1007" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>creditremaining<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>creditlimit<span class="hl opt">};</span></li>
<li id="n_1008" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1009" class="hl">        SELECT SUM<span class="hl opt">(</span>amount <span class="hl opt">- </span>paid<span class="hl opt">)</span></li>
<li id="n_1010" class="hl">          FROM <span class="hl kwb">$arap</span></li>
<li id="n_1011" class="hl">         WHERE <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}</span>_id <span class="hl opt">= ?|;</span></li>
<li id="n_1012" class="hl"></li>
<li id="n_1013" class="hl">    <span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1014" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">} )</span></li>
<li id="n_1015" class="hl">      <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1016" class="hl"></li>
<li id="n_1017" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>creditremaining<span class="hl opt">} ) -= </span><span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_array</span><span class="hl opt">;</span></li>
<li id="n_1018" class="hl"></li>
<li id="n_1019" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_1020" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl sng">&quot;customer&quot;</span> <span class="hl opt">) {</span></li>
<li id="n_1021" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} = </span><span class="hl sng">&#39;vendor&#39;</span><span class="hl opt">;</span></li>
<li id="n_1022" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1023" class="hl"></li>
<li id="n_1024" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1025" class="hl">        SELECT o<span class="hl opt">.</span>amount<span class="hl opt">, (</span>SELECT e<span class="hl opt">.</span><span class="hl kwb">$buysell </span>FROM exchangerate e</li>
<li id="n_1026" class="hl">                           WHERE e<span class="hl opt">.</span>curr <span class="hl opt">= </span>o<span class="hl opt">.</span>curr</li>
<li id="n_1027" class="hl">                                 AND e<span class="hl opt">.</span>transdate <span class="hl opt">= </span>o<span class="hl opt">.</span>transdate<span class="hl opt">)</span></li>
<li id="n_1028" class="hl">          FROM oe o</li>
<li id="n_1029" class="hl">         WHERE o<span class="hl opt">.</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}</span>_id <span class="hl opt">= ?</span></li>
<li id="n_1030" class="hl">               AND o<span class="hl opt">.</span>quotation <span class="hl opt">= </span><span class="hl sng">&#39;0&#39;</span> AND o<span class="hl opt">.</span>closed <span class="hl opt">= </span><span class="hl sng">&#39;0&#39;</span><span class="hl opt">|;</span></li>
<li id="n_1031" class="hl"></li>
<li id="n_1032" class="hl">    <span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1033" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">} ) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1034" class="hl"></li>
<li id="n_1035" class="hl">    <span class="hl kwa">while </span><span class="hl opt">( </span><span class="hl kwc">my </span><span class="hl kwb">&#64;ref </span><span class="hl opt">= </span><span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_array </span><span class="hl opt">) {</span></li>
<li id="n_1036" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">db_parse_numeric</span><span class="hl opt">(</span>sth <span class="hl opt">=&gt; </span><span class="hl kwb">$sth</span><span class="hl opt">, </span>arrayref <span class="hl opt">=&gt; </span>\<span class="hl kwb">&#64;ref</span><span class="hl opt">);</span></li>
<li id="n_1037" class="hl">        <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$amount</span><span class="hl opt">, </span><span class="hl kwb">$exch</span><span class="hl opt">) = </span><span class="hl kwb">&#64;ref</span><span class="hl opt">;</span></li>
<li id="n_1038" class="hl">        <span class="hl kwb">$exch </span><span class="hl opt">= </span><span class="hl num">1 </span><span class="hl kwa">unless </span><span class="hl kwb">$exch</span><span class="hl opt">;</span></li>
<li id="n_1039" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>creditremaining<span class="hl opt">} -= </span><span class="hl kwb">$amount </span><span class="hl opt">* </span><span class="hl kwb">$exch</span><span class="hl opt">;</span></li>
<li id="n_1040" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1041" class="hl"></li>
<li id="n_1042" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_1043" class="hl"></li>
<li id="n_1044" class="hl">    <span class="hl slc"># get shipto if we did not converted an order or invoice</span></li>
<li id="n_1045" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( !</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>shipto<span class="hl opt">} ) {</span></li>
<li id="n_1046" class="hl"></li>
<li id="n_1047" class="hl">        <span class="hl kwa">for </span><span class="hl opt">(</span></li>
<li id="n_1048" class="hl">            <span class="hl sng">qw(shiptoname shiptoaddress1 shiptoaddress2</span></li>
<li id="n_1049" class="hl"><span class="hl sng">            shiptocity shiptostate shiptozipcode</span></li>
<li id="n_1050" class="hl"><span class="hl sng">            shiptocountry shiptocontact shiptophone</span></li>
<li id="n_1051" class="hl"><span class="hl sng">            shiptofax shiptoemail)</span></li>
<li id="n_1052" class="hl">          <span class="hl opt">)</span></li>
<li id="n_1053" class="hl">        <span class="hl opt">{</span></li>
<li id="n_1054" class="hl">            <span class="hl kwc">delete </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">};</span></li>
<li id="n_1055" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1056" class="hl"></li>
<li id="n_1057" class="hl">        <span class="hl slc">## needs fixing (SELECT *)</span></li>
<li id="n_1058" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1059" class="hl">            SELECT <span class="hl opt">* </span></li>
<li id="n_1060" class="hl">              FROM shipto</li>
<li id="n_1061" class="hl">             WHERE trans_id <span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">}|;</span></li>
<li id="n_1062" class="hl"></li>
<li id="n_1063" class="hl">        <span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1064" class="hl">        <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute </span><span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1065" class="hl"></li>
<li id="n_1066" class="hl">        <span class="hl kwb">$ref </span><span class="hl opt">= </span><span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_hashref</span><span class="hl opt">(</span>NAME_lc<span class="hl opt">);</span></li>
<li id="n_1067" class="hl">        <span class="hl kwa">for </span><span class="hl opt">( </span><span class="hl kwc">keys </span><span class="hl kwb">%$ref </span><span class="hl opt">) { </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} }</span></li>
<li id="n_1068" class="hl">        <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_1069" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1070" class="hl"></li>
<li id="n_1071" class="hl">    <span class="hl slc"># get taxes</span></li>
<li id="n_1072" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1073" class="hl">        SELECT c<span class="hl opt">.</span>accno</li>
<li id="n_1074" class="hl">          FROM chart c</li>
<li id="n_1075" class="hl">          JOIN <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}</span>tax ct ON <span class="hl opt">(</span>ct<span class="hl opt">.</span>chart_id <span class="hl opt">= </span>c<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1076" class="hl">         WHERE ct<span class="hl opt">.</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}</span>_id <span class="hl opt">= ?|;</span></li>
<li id="n_1077" class="hl"></li>
<li id="n_1078" class="hl">    <span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1079" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">} ) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1080" class="hl"></li>
<li id="n_1081" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%tax</span><span class="hl opt">;</span></li>
<li id="n_1082" class="hl"></li>
<li id="n_1083" class="hl">    <span class="hl kwa">while </span><span class="hl opt">( </span><span class="hl kwb">$ref </span><span class="hl opt">= </span><span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_hashref</span><span class="hl opt">(</span>NAME_lc<span class="hl opt">) ) {</span></li>
<li id="n_1084" class="hl">        <span class="hl kwb">$tax</span><span class="hl opt">{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">} } = </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_1085" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1086" class="hl"></li>
<li id="n_1087" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_1088" class="hl">    <span class="hl kwb">$transdate </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">} );</span></li>
<li id="n_1089" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$where </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>AND <span class="hl opt">(</span>t<span class="hl opt">.</span>validto <span class="hl opt">&gt;= </span><span class="hl kwb">$transdate </span>OR t<span class="hl opt">.</span>validto IS NULL<span class="hl opt">)|</span></li>
<li id="n_1090" class="hl">      <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">};</span></li>
<li id="n_1091" class="hl"></li>
<li id="n_1092" class="hl">    <span class="hl slc"># get tax rates and description</span></li>
<li id="n_1093" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1094" class="hl">           SELECT c<span class="hl opt">.</span>accno<span class="hl opt">, </span>c<span class="hl opt">.</span>description<span class="hl opt">, </span>t<span class="hl opt">.</span>rate<span class="hl opt">, </span>t<span class="hl opt">.</span>taxnumber</li>
<li id="n_1095" class="hl">             FROM chart c</li>
<li id="n_1096" class="hl">             JOIN tax t ON <span class="hl opt">(</span>c<span class="hl opt">.</span>id <span class="hl opt">= </span>t<span class="hl opt">.</span>chart_id<span class="hl opt">)</span></li>
<li id="n_1097" class="hl">            WHERE c<span class="hl opt">.</span><span class="hl kwc">link </span>LIKE <span class="hl sng">&#39;</span><span class="hl ipl">%$</span><span class="hl sng">{ARAP}_tax%&#39;</span></li>
<li id="n_1098" class="hl">                  <span class="hl kwb">$where</span></li>
<li id="n_1099" class="hl">         ORDER BY accno<span class="hl opt">, </span>validto<span class="hl opt">|;</span></li>
<li id="n_1100" class="hl"></li>
<li id="n_1101" class="hl">    <span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1102" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute </span><span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1103" class="hl"></li>
<li id="n_1104" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>taxaccounts<span class="hl opt">} = </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_1105" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%a </span><span class="hl opt">= ();</span></li>
<li id="n_1106" class="hl"></li>
<li id="n_1107" class="hl">    <span class="hl kwa">while </span><span class="hl opt">( </span><span class="hl kwb">$ref </span><span class="hl opt">= </span><span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_hashref</span><span class="hl opt">(</span>NAME_lc<span class="hl opt">) ) {</span></li>
<li id="n_1108" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">db_parse_numeric</span><span class="hl opt">(</span>sth <span class="hl opt">=&gt; </span><span class="hl kwb">$sth</span><span class="hl opt">, </span>hashref <span class="hl opt">=&gt; </span><span class="hl kwb">$hashref</span><span class="hl opt">);</span></li>
<li id="n_1109" class="hl"></li>
<li id="n_1110" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$tax</span><span class="hl opt">{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">} } ) {</span></li>
<li id="n_1111" class="hl">            <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwc">not exists </span><span class="hl kwb">$a</span><span class="hl opt">{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">} } ) {</span></li>
<li id="n_1112" class="hl">                <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(rate description taxnumber)</span><span class="hl opt">) {</span></li>
<li id="n_1113" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{accno}_</span><span class="hl ipl">$_</span><span class="hl sng">&quot;</span><span class="hl opt">} = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">};</span></li>
<li id="n_1114" class="hl">                <span class="hl opt">}</span></li>
<li id="n_1115" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>taxaccounts<span class="hl opt">} .= </span><span class="hl sng">&quot;</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{accno} &quot;</span><span class="hl opt">;</span></li>
<li id="n_1116" class="hl">                <span class="hl kwb">$a</span><span class="hl opt">{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">} } = </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_1117" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1118" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1119" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1120" class="hl"></li>
<li id="n_1121" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_1122" class="hl">    <span class="hl kwc">chop </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>taxaccounts<span class="hl opt">};</span></li>
<li id="n_1123" class="hl"></li>
<li id="n_1124" class="hl">    <span class="hl slc"># setup last accounts used for this customer/vendor</span></li>
<li id="n_1125" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( !</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} &amp;&amp; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>type<span class="hl opt">} !~ </span><span class="hl kwd">/_(order|quotation)/ </span><span class="hl opt">) {</span></li>
<li id="n_1126" class="hl"></li>
<li id="n_1127" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1128" class="hl">               SELECT c<span class="hl opt">.</span>accno<span class="hl opt">, </span>c<span class="hl opt">.</span>description<span class="hl opt">, </span>c<span class="hl opt">.</span><span class="hl kwc">link</span><span class="hl opt">, </span></li>
<li id="n_1129" class="hl">                                  c<span class="hl opt">.</span>category<span class="hl opt">,</span></li>
<li id="n_1130" class="hl">                      ac<span class="hl opt">.</span>project_id<span class="hl opt">,</span></li>
<li id="n_1131" class="hl">                      a<span class="hl opt">.</span>department_id</li>
<li id="n_1132" class="hl">                 FROM chart c</li>
<li id="n_1133" class="hl">                 JOIN acc_trans ac ON <span class="hl opt">(</span>ac<span class="hl opt">.</span>chart_id <span class="hl opt">= </span>c<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1134" class="hl">                 JOIN <span class="hl kwb">$arap </span>a ON <span class="hl opt">(</span>a<span class="hl opt">.</span>id <span class="hl opt">= </span>ac<span class="hl opt">.</span>trans_id<span class="hl opt">)</span></li>
<li id="n_1135" class="hl">                WHERE a<span class="hl opt">.</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}</span>_id <span class="hl opt">= ?</span></li>
<li id="n_1136" class="hl">                      AND a<span class="hl opt">.</span>id <span class="hl opt">= (</span>SELECT max<span class="hl opt">(</span>id<span class="hl opt">) </span></li>
<li id="n_1137" class="hl">                                     FROM <span class="hl kwb">$arap</span></li>
<li id="n_1138" class="hl">                                    WHERE <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">}</span>_id <span class="hl opt">= </span></li>
<li id="n_1139" class="hl">                                          <span class="hl opt">?)</span></li>
<li id="n_1140" class="hl">            <span class="hl opt">|;</span></li>
<li id="n_1141" class="hl"></li>
<li id="n_1142" class="hl">        <span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1143" class="hl">        <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{vc}_id&quot;</span><span class="hl opt">} )</span></li>
<li id="n_1144" class="hl">          <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1145" class="hl"></li>
<li id="n_1146" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$i </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1147" class="hl"></li>
<li id="n_1148" class="hl">        <span class="hl kwa">while </span><span class="hl opt">( </span><span class="hl kwb">$ref </span><span class="hl opt">= </span><span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_hashref</span><span class="hl opt">(</span>NAME_lc<span class="hl opt">) ) {</span></li>
<li id="n_1149" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>department_id<span class="hl opt">} = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>department_id<span class="hl opt">};</span></li>
<li id="n_1150" class="hl">            <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span><span class="hl kwc">link</span><span class="hl opt">} =~ </span><span class="hl kwd">/_amount/ </span><span class="hl opt">) {</span></li>
<li id="n_1151" class="hl">                <span class="hl kwb">$i++</span><span class="hl opt">;</span></li>
<li id="n_1152" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{ARAP}_amount_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} =</span></li>
<li id="n_1153" class="hl">                  <span class="hl sng">&quot;</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{accno}--</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{description}&quot;</span></li>
<li id="n_1154" class="hl">                  <span class="hl kwa">if </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">};</span></li>
<li id="n_1155" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;projectnumber_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} =</span></li>
<li id="n_1156" class="hl">                  <span class="hl sng">&quot;</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{projectnumber}--&quot;</span> <span class="hl opt">. </span><span class="hl sng">&quot;</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{project_id}&quot;</span></li>
<li id="n_1157" class="hl">                  <span class="hl kwa">if </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>project_id<span class="hl opt">};</span></li>
<li id="n_1158" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1159" class="hl"></li>
<li id="n_1160" class="hl">            <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span><span class="hl kwc">link</span><span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>ARAP<span class="hl opt">} ) {</span></li>
<li id="n_1161" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>ARAP<span class="hl opt">} } = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{ARAP}_1&quot;</span><span class="hl opt">} =</span></li>
<li id="n_1162" class="hl">                  <span class="hl sng">&quot;</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{accno}--&quot;</span> <span class="hl opt">. </span><span class="hl sng">&quot;</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{description}&quot;</span></li>
<li id="n_1163" class="hl">                  <span class="hl kwa">if </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">};</span></li>
<li id="n_1164" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1165" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1166" class="hl"></li>
<li id="n_1167" class="hl">        <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_1168" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span><span class="hl sng">&quot;select description from department where id = ?&quot;</span><span class="hl opt">;</span></li>
<li id="n_1169" class="hl">        <span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1170" class="hl">        <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>department_id<span class="hl opt">});</span></li>
<li id="n_1171" class="hl">        <span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>department<span class="hl opt">}) = </span><span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_array</span><span class="hl opt">;</span></li>
<li id="n_1172" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>rowcount<span class="hl opt">} = </span><span class="hl kwb">$i </span><span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$i </span><span class="hl opt">&amp;&amp; !</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>type<span class="hl opt">} );</span></li>
<li id="n_1173" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1174" class="hl"></li>
<li id="n_1175" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">commit</span><span class="hl opt">;</span></li>
<li id="n_1176" class="hl"><span class="hl opt">}</span></li>
<li id="n_1177" class="hl"></li>
<li id="n_1178" class="hl"><span class="hl num">1</span><span class="hl opt">;</span></li>
</ol></code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.46.0</a>) at 2025-05-31 19:07:54 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
