<!DOCTYPE html>
<html lang='en'>
<head>
<title>post-commit.mdwn « doc - ikiwiki-upstream - Unnamed repository; edit this file to name it for gitweb.</title>
<meta name='generator' content='cgit v1.2.3'/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit-css/cgit.css'/>
<link rel='stylesheet' type='text/css' href='/cgit-local/local.css'/>
<script type='text/javascript' src='/cgit.js'></script>
<link rel='shortcut icon' href='/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='https://source.jones.dk/ikiwiki-upstream/atom/doc/post-commit.mdwn?h=master' type='application/atom+xml'/>
<link rel='vcs-git' href='https://source.jones.dk/ikiwiki-upstream' title='ikiwiki-upstream Git repository'/>
<link rel='vcs-git' href='user@source.jones.dk:ikiwiki-upstream' title='ikiwiki-upstream 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='/ikiwiki-upstream/'>ikiwiki-upstream</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='0b3d252ad6ff34d31d10eb82a04ab6d1e0870e4c'/><select name='h' onchange='this.form.submit();'>
<option value='layoutgala'>layoutgala</option>
<option value='master' selected='selected'>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='/ikiwiki-upstream/'>summary</a><a href='/ikiwiki-upstream/refs/?id=0b3d252ad6ff34d31d10eb82a04ab6d1e0870e4c'>refs</a><a href='/ikiwiki-upstream/log/doc/post-commit.mdwn'>log</a><a class='active' href='/ikiwiki-upstream/tree/doc/post-commit.mdwn?id=0b3d252ad6ff34d31d10eb82a04ab6d1e0870e4c'>tree</a><a href='/ikiwiki-upstream/commit/doc/post-commit.mdwn?id=0b3d252ad6ff34d31d10eb82a04ab6d1e0870e4c'>commit</a><a href='/ikiwiki-upstream/diff/doc/post-commit.mdwn?id=0b3d252ad6ff34d31d10eb82a04ab6d1e0870e4c'>diff</a></td><td class='form'><form class='right' method='get' action='/ikiwiki-upstream/log/doc/post-commit.mdwn'>
<input type='hidden' name='id' value='0b3d252ad6ff34d31d10eb82a04ab6d1e0870e4c'/><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='/ikiwiki-upstream/tree/?id=0b3d252ad6ff34d31d10eb82a04ab6d1e0870e4c'>root</a>/<a href='/ikiwiki-upstream/tree/doc?id=0b3d252ad6ff34d31d10eb82a04ab6d1e0870e4c'>doc</a>/<a href='/ikiwiki-upstream/tree/doc/post-commit.mdwn?id=0b3d252ad6ff34d31d10eb82a04ab6d1e0870e4c'>post-commit.mdwn</a></div><div class='content'>blob: 1c5176d428da8b3e4890cf492ebd75a34e60e194 (<a href='/ikiwiki-upstream/plain/doc/post-commit.mdwn?id=0b3d252ad6ff34d31d10eb82a04ab6d1e0870e4c'>plain</a>)
<table summary='blob content' class='blob'>
<tr>
<td class='lines'><pre><code><p>If your wiki is kept in [[revision_control|rcs]], a post-commit hook is run
every time you commit a change to your repository.</p>
<p>ikiwiki generates the &quot;post-commit hook&quot; once you've uncommented the relevant
section (under wrappers) in the ikiwiki.setup.</p>
<p>The generated wrapper is a C program that is designed to safely be made
suid if necessary. It's hardcoded to run ikiwiki with the settings
specified when you ran --wrapper, and can only be used to update and
compile that one checkout into the specified html directory.</p>
<p>Depending on your setup, the post-commit hook might end up
getting called by users who have write access to the repository, but not to
your wiki checkout and html directory. If so, you can safely make
the wrapper suid to a user who can write there (<em>not</em> to root!). You might
want to read [[Security]] first.</p>
<p>[[Setup]] explains setting this up from the start and see [[rcs/details]] to
know more.</p>
</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-06-26 22:03:11 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
stems Inc. 2000-2005 and licensed</span></li>
<li id="n_12" 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_13" class="hl"><span class="hl slc"># version.  For a full list including contact information of contributors,</span></li>
<li id="n_14" class="hl"><span class="hl slc"># maintainers, and copyright holders, see the CONTRIBUTORS file.</span></li>
<li id="n_15" class="hl"><span class="hl slc">#</span></li>
<li id="n_16" class="hl"><span class="hl slc"># Original Copyright Notice from SQL-Ledger 2.6.17 (before the fork):</span></li>
<li id="n_17" class="hl"><span class="hl slc"># Copyright (C) 2000</span></li>
<li id="n_18" class="hl"><span class="hl slc">#</span></li>
<li id="n_19" class="hl"><span class="hl slc">#  Author: DWS Systems Inc.</span></li>
<li id="n_20" class="hl"><span class="hl slc">#     Web: http://www.sql-ledger.org</span></li>
<li id="n_21" class="hl"><span class="hl slc">#</span></li>
<li id="n_22" class="hl"><span class="hl slc">#  Contributors: Jim Rawlings &lt;jim&#64;your-dba.com&gt;</span></li>
<li id="n_23" class="hl"><span class="hl slc">#`</span></li>
<li id="n_24" class="hl"><span class="hl slc">#======================================================================</span></li>
<li id="n_25" class="hl"><span class="hl slc">#</span></li>
<li id="n_26" class="hl"><span class="hl slc"># This file has undergone whitespace cleanup.</span></li>
<li id="n_27" class="hl"><span class="hl slc">#</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"># Inventory invoicing module</span></li>
<li id="n_31" class="hl"><span class="hl slc">#</span></li>
<li id="n_32" class="hl"><span class="hl slc">#======================================================================</span></li>
<li id="n_33" class="hl"></li>
<li id="n_34" class="hl"><span class="hl kwa">package </span>IS<span class="hl opt">;</span></li>
<li id="n_35" class="hl"><span class="hl kwa">use </span>LedgerSMB<span class="hl opt">::</span>Tax<span class="hl opt">;</span></li>
<li id="n_36" class="hl"><span class="hl kwa">use </span>LedgerSMB<span class="hl opt">::</span>PriceMatrix<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"></li>
<li id="n_40" class="hl"><span class="hl kwa">sub </span>invoice_details <span class="hl opt">{</span></li>
<li id="n_41" class="hl">    <span class="hl kwa">use </span>LedgerSMB<span class="hl opt">::</span>CP<span class="hl opt">;</span></li>
<li id="n_42" 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_43" class="hl"></li>
<li id="n_44" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>duedate<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 opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>duedate<span class="hl opt">});</span></li>
<li id="n_45" class="hl"></li>
<li id="n_46" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_47" 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_48" class="hl"></li>
<li id="n_49" 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_50" class="hl">        SELECT <span class="hl opt">?::</span>date <span class="hl opt">- ?::</span>date</li>
<li id="n_51" class="hl">                       AS terms<span class="hl opt">, </span>value</li>
<li id="n_52" class="hl">          FROM defaults</li>
<li id="n_53" class="hl">         WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;weightunit&#39;</span><span class="hl opt">|;</span></li>
<li id="n_54" 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_55" 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>duedate<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_56" 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_57" class="hl"></li>
<li id="n_58" class="hl">    <span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>terms<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>weightunit<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_59" 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_60" class="hl"></li>
<li id="n_61" class="hl">    <span class="hl slc"># this is for the template</span></li>
<li id="n_62" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invdate<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_63" class="hl">  </li>
<li id="n_64" 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_65" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$item</span><span class="hl opt">;</span></li>
<li id="n_66" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$i</span><span class="hl opt">;</span></li>
<li id="n_67" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;sortlist </span><span class="hl opt">= ();</span></li>
<li id="n_68" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$projectnumber</span><span class="hl opt">;</span></li>
<li id="n_69" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$projectdescription</span><span class="hl opt">;</span></li>
<li id="n_70" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$projectnumber_id</span><span class="hl opt">;</span></li>
<li id="n_71" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$translation</span><span class="hl opt">;</span></li>
<li id="n_72" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$partsgroup</span><span class="hl opt">;</span></li>
<li id="n_73" class="hl">  </li>
<li id="n_74" class="hl">  </li>
<li id="n_75" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">;</span></li>
<li id="n_76" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%taxaccounts</span><span class="hl opt">;</span></li>
<li id="n_77" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$tax</span><span class="hl opt">;</span></li>
<li id="n_78" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$taxrate</span><span class="hl opt">;</span></li>
<li id="n_79" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$taxamount</span><span class="hl opt">;</span></li>
<li id="n_80" class="hl"> </li>
<li id="n_81" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%translations</span><span class="hl opt">;</span></li>
<li id="n_82" class="hl">  </li>
<li id="n_83" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_84" class="hl">           SELECT p<span class="hl opt">.</span>description<span class="hl opt">, </span>t<span class="hl opt">.</span>description</li>
<li id="n_85" class="hl">             FROM project p</li>
<li id="n_86" class="hl">        LEFT JOIN translation t </li>
<li id="n_87" class="hl">                  ON <span class="hl opt">(</span>t<span class="hl opt">.</span>trans_id <span class="hl opt">= </span>p<span class="hl opt">.</span>id </li>
<li id="n_88" class="hl">                  AND t<span class="hl opt">.</span>language_code <span class="hl opt">= ?)</span></li>
<li id="n_89" class="hl">            WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_90" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$prh </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><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_91" class="hl"></li>
<li id="n_92" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_93" class="hl">        SELECT inventory_accno_id<span class="hl opt">, </span>income_accno_id<span class="hl opt">,</span></li>
<li id="n_94" class="hl">               expense_accno_id<span class="hl opt">, </span>assembly<span class="hl opt">, </span>weight FROM parts</li>
<li id="n_95" class="hl">         WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_96" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$pth </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><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_97" class="hl"></li>
<li id="n_98" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sortby</span><span class="hl opt">;</span></li>
<li id="n_99" class="hl">  </li>
<li id="n_100" class="hl">    <span class="hl slc"># sort items by project and partsgroup</span></li>
<li id="n_101" 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><span class="hl num">1</span><span class="hl opt">) {</span></li>
<li id="n_102" class="hl"></li>
<li id="n_103" class="hl">        <span class="hl slc"># account numbers</span></li>
<li id="n_104" class="hl">        <span class="hl kwb">$pth</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;id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_105" class="hl">        <span class="hl kwb">$ref </span><span class="hl opt">= </span><span class="hl kwb">$pth</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_106" 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 sng">&quot;${_}_</span><span class="hl ipl">$i</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_107" class="hl">        <span class="hl kwb">$pth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_108" class="hl"></li>
<li id="n_109" class="hl">        <span class="hl kwb">$projectnumber_id </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_110" class="hl">        <span class="hl kwb">$projectnumber </span><span class="hl opt">= </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_111" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>partsgroup<span class="hl opt">} = </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_112" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>projectnumber<span class="hl opt">} = </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_113" class="hl">    </li>
<li id="n_114" 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>groupprojectnumber<span class="hl opt">} || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>grouppartsgroup<span class="hl opt">}) {</span></li>
<li id="n_115" class="hl">      </li>
<li id="n_116" class="hl">            <span class="hl kwb">$inventory_accno_id </span><span class="hl opt">= </span></li>
<li id="n_117" class="hl">                <span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;inventory_accno_id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_118" class="hl">                    <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;assembly_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) </span></li>
<li id="n_119" class="hl">                <span class="hl opt">? </span><span class="hl sng">&quot;1&quot;</span> </li>
<li id="n_120" class="hl">                <span class="hl opt">: </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_121" class="hl">      </li>
<li id="n_122" 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>groupprojectnumber<span class="hl opt">}) {</span></li>
<li id="n_123" class="hl">                <span class="hl opt">(</span><span class="hl kwb">$projectnumber</span><span class="hl opt">, </span><span class="hl kwb">$projectnumber_id</span><span class="hl opt">) = </span></li>
<li id="n_124" class="hl">                    <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_125" class="hl">            <span class="hl opt">}</span></li>
<li id="n_126" 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>grouppartsgroup<span class="hl opt">}) {</span></li>
<li id="n_127" class="hl">                <span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>partsgroup<span class="hl opt">}) = </span></li>
<li id="n_128" class="hl">                    <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;partsgroup_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_129" class="hl">            <span class="hl opt">}</span></li>
<li id="n_130" class="hl">      </li>
<li id="n_131" class="hl">            <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$projectnumber_id </span><span class="hl opt">&amp;&amp; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>groupprojectnumber<span class="hl opt">}) {</span></li>
<li id="n_132" class="hl">                <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$translation</span><span class="hl opt">{</span><span class="hl kwb">$projectnumber_id</span><span class="hl opt">}) {</span></li>
<li id="n_133" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>projectnumber<span class="hl opt">} = </span></li>
<li id="n_134" class="hl">                        <span class="hl kwb">$translation</span><span class="hl opt">{</span><span class="hl kwb">$projectnumber_id</span><span class="hl opt">};</span></li>
<li id="n_135" class="hl">                <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_136" class="hl">                    <span class="hl slc"># get project description</span></li>
<li id="n_137" class="hl">                    <span class="hl kwb">$prh</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">$projectnumber_id</span><span class="hl opt">, </span></li>
<li id="n_138" class="hl">                        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>language_code<span class="hl opt">});</span></li>
<li id="n_139" class="hl"></li>
<li id="n_140" class="hl">                    <span class="hl opt">(</span><span class="hl kwb">$projectdescription</span><span class="hl opt">, </span><span class="hl kwb">$translation</span><span class="hl opt">) = </span></li>
<li id="n_141" class="hl">                        <span class="hl kwb">$prh</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_array</span><span class="hl opt">;</span></li>
<li id="n_142" class="hl"></li>
<li id="n_143" class="hl">                    <span class="hl kwb">$prh</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_144" class="hl">      </li>
<li id="n_145" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>projectnumber<span class="hl opt">} = </span></li>
<li id="n_146" class="hl">                        <span class="hl opt">(</span><span class="hl kwb">$translation</span><span class="hl opt">) </span></li>
<li id="n_147" class="hl">                        <span class="hl opt">? </span><span class="hl sng">&quot;</span><span class="hl ipl">$projectnumber</span><span class="hl sng">, </span><span class="hl ipl">$translation</span><span class="hl sng">&quot;</span></li>
<li id="n_148" class="hl">                        <span class="hl opt">: </span><span class="hl sng">&quot;</span><span class="hl ipl">$projectnumber</span><span class="hl sng">, &quot;</span><span class="hl opt">.</span></li>
<li id="n_149" class="hl">                            <span class="hl sng">&quot;</span><span class="hl ipl">$projectdescription</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_150" class="hl"></li>
<li id="n_151" class="hl">                    <span class="hl kwb">$translation</span><span class="hl opt">{</span><span class="hl kwb">$projectnumber_id</span><span class="hl opt">} = </span></li>
<li id="n_152" class="hl">                        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>projectnumber<span class="hl opt">};</span></li>
<li id="n_153" class="hl">                <span class="hl opt">}</span></li>
<li id="n_154" class="hl">            <span class="hl opt">}</span></li>
<li id="n_155" class="hl"></li>
<li id="n_156" 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>grouppartsgroup<span class="hl opt">} &amp;&amp; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>partsgroup<span class="hl opt">}) {</span></li>
<li id="n_157" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>projectnumber<span class="hl opt">} .= </span><span class="hl sng">&quot; / &quot;</span> </li>
<li id="n_158" class="hl">                    <span class="hl kwa">if </span><span class="hl kwb">$projectnumber_id</span><span class="hl opt">;</span></li>
<li id="n_159" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>projectnumber<span class="hl opt">} .= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>partsgroup<span class="hl opt">};</span></li>
<li id="n_160" class="hl">            <span class="hl opt">}</span></li>
<li id="n_161" class="hl">      </li>
<li id="n_162" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_string</span><span class="hl opt">(</span>projectnumber<span class="hl opt">);</span></li>
<li id="n_163" class="hl"></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 kwb">$sortby </span><span class="hl opt">= </span>qq<span class="hl opt">|</span><span class="hl kwb">$projectnumber$form</span><span class="hl opt">-&gt;{</span>partsgroup<span class="hl opt">}|;</span></li>
<li id="n_167" 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>sortby<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl sng">&#39;runningnumber&#39;</span><span class="hl opt">) {</span></li>
<li id="n_168" class="hl">            <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(partnumber description bin)</span><span class="hl opt">) {</span></li>
<li id="n_169" class="hl">                <span class="hl kwb">$sortby </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">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_170" class="hl">                    <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>sortby<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl kwb">$_</span><span class="hl opt">;</span></li>
<li id="n_171" class="hl">            <span class="hl opt">}</span></li>
<li id="n_172" class="hl">        <span class="hl opt">}</span></li>
<li id="n_173" class="hl"></li>
<li id="n_174" class="hl">        <span class="hl kwc">push </span><span class="hl kwb">&#64;sortlist</span><span class="hl opt">, [ </span><span class="hl kwb">$i</span><span class="hl opt">, </span></li>
<li id="n_175" class="hl">            qq<span class="hl opt">|</span><span class="hl kwb">$projectnumber$form</span><span class="hl opt">-&gt;{</span>partsgroup<span class="hl opt">}|.</span></li>
<li id="n_176" class="hl">                qq<span class="hl opt">|</span><span class="hl kwb">$inventory_accno_id</span><span class="hl opt">|, </span></li>
<li id="n_177" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>projectnumber<span class="hl opt">}, </span><span class="hl kwb">$projectnumber_id</span><span class="hl opt">, </span></li>
<li id="n_178" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>partsgroup<span class="hl opt">}, </span><span class="hl kwb">$sortby </span><span class="hl opt">];</span></li>
<li id="n_179" class="hl"></li>
<li id="n_180" class="hl">    <span class="hl opt">}</span></li>
<li id="n_181" class="hl"></li>
<li id="n_182" class="hl">    <span class="hl slc"># sort the whole thing by project and group</span></li>
<li id="n_183" class="hl">    <span class="hl kwb">&#64;sortlist </span><span class="hl opt">= </span><span class="hl kwc">sort </span><span class="hl opt">{ </span><span class="hl kwb">$a</span><span class="hl opt">-&gt;[</span><span class="hl num">5</span><span class="hl opt">] </span><span class="hl kwc">cmp </span><span class="hl kwb">$b</span><span class="hl opt">-&gt;[</span><span class="hl num">5</span><span class="hl opt">] } </span><span class="hl kwb">&#64;sortlist</span><span class="hl opt">;</span></li>
<li id="n_184" class="hl"></li>
<li id="n_185" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$runningnumber </span><span class="hl opt">= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_186" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sameitem </span><span class="hl opt">= </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_187" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$subtotal</span><span class="hl opt">;</span></li>
<li id="n_188" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$k </span><span class="hl opt">= </span><span class="hl kwc">scalar </span><span class="hl kwb">&#64;sortlist</span><span class="hl opt">;</span></li>
<li id="n_189" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$j </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_190" class="hl"></li>
<li id="n_191" class="hl">    <span class="hl kwa">foreach </span><span class="hl kwb">$item </span><span class="hl opt">(</span><span class="hl kwb">&#64;sortlist</span><span class="hl opt">) {</span></li>
<li id="n_192" class="hl"></li>
<li id="n_193" class="hl">        <span class="hl kwb">$i </span><span class="hl opt">= </span><span class="hl kwb">$item</span><span class="hl opt">-&gt;[</span><span class="hl num">0</span><span class="hl opt">];</span></li>
<li id="n_194" class="hl">        <span class="hl kwb">$j++</span><span class="hl opt">;</span></li>
<li id="n_195" class="hl"></li>
<li id="n_196" class="hl">        <span class="hl slc"># heading</span></li>
<li id="n_197" 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>groupprojectnumber<span class="hl opt">} || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>grouppartsgroup<span class="hl opt">}) {</span></li>
<li id="n_198" class="hl">            <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$item</span><span class="hl opt">-&gt;[</span><span class="hl num">1</span><span class="hl opt">] </span><span class="hl kwc">ne </span><span class="hl kwb">$sameitem</span><span class="hl opt">) {</span></li>
<li id="n_199" class="hl">                <span class="hl kwb">$sameitem </span><span class="hl opt">= </span><span class="hl kwb">$item</span><span class="hl opt">-&gt;[</span><span class="hl num">1</span><span class="hl opt">];</span></li>
<li id="n_200" class="hl">    </li>
<li id="n_201" class="hl">                <span class="hl kwb">$ok </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_202" class="hl"></li>
<li id="n_203" 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>groupprojectnumber<span class="hl opt">}) {</span></li>
<li id="n_204" class="hl">                    <span class="hl kwb">$ok </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_205" class="hl">                <span class="hl opt">}</span></li>
<li id="n_206" 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>grouppartsgroup<span class="hl opt">}) {</span></li>
<li id="n_207" class="hl">                    <span class="hl kwb">$ok </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;partsgroup_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_208" class="hl">                        <span class="hl kwa">unless </span><span class="hl kwb">$ok</span><span class="hl opt">;</span></li>
<li id="n_209" class="hl">                <span class="hl opt">}</span></li>
<li id="n_210" class="hl"></li>
<li id="n_211" class="hl">                <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$ok</span><span class="hl opt">) {</span></li>
<li id="n_212" class="hl">      </li>
<li id="n_213" 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;inventory_accno_id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_214" class="hl">                        <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;assembly_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_215" class="hl"></li>
<li id="n_216" 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>part<span class="hl opt">} }, </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">);</span></li>
<li id="n_217" 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>service<span class="hl opt">} }, </span></li>
<li id="n_218" class="hl">                            NULL<span class="hl opt">);</span></li>
<li id="n_219" class="hl">                    <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_220" 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>part<span class="hl opt">} }, </span>NULL<span class="hl opt">);</span></li>
<li id="n_221" 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>service<span class="hl opt">} }, </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">);</span></li>
<li id="n_222" class="hl">                    <span class="hl opt">}</span></li>
<li id="n_223" class="hl">    </li>
<li id="n_224" 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>description<span class="hl opt">} }, </span></li>
<li id="n_225" class="hl">                        <span class="hl kwb">$item</span><span class="hl opt">-&gt;[</span><span class="hl num">2</span><span class="hl opt">]);</span></li>
<li id="n_226" class="hl">                    <span class="hl kwa">for </span><span class="hl opt">(</span></li>
<li id="n_227" class="hl">                        <span class="hl sng">qw(taxrates runningnumber number</span></li>
<li id="n_228" class="hl"><span class="hl sng">                        sku serialnumber bin qty ship </span></li>
<li id="n_229" class="hl"><span class="hl sng">                        unit deliverydate projectnumber </span></li>
<li id="n_230" class="hl"><span class="hl sng">                        sellprice listprice netprice </span></li>
<li id="n_231" class="hl"><span class="hl sng">                        discount discountrate linetotal </span></li>
<li id="n_232" class="hl"><span class="hl sng">                        weight itemnotes)</span></li>
<li id="n_233" class="hl">                    <span class="hl opt">) { </span></li>
<li id="n_234" 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><span class="hl kwb">$_</span><span class="hl opt">} }, </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">); </span></li>
<li id="n_235" class="hl">                    <span class="hl opt">}</span></li>
<li id="n_236" 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>lineitems<span class="hl opt">} }, </span></li>
<li id="n_237" class="hl">                        <span class="hl opt">{ </span>amount <span class="hl opt">=&gt; </span><span class="hl num">0</span><span class="hl opt">, </span>tax <span class="hl opt">=&gt; </span><span class="hl num">0 </span><span class="hl opt">});</span></li>
<li id="n_238" class="hl">                <span class="hl opt">}</span></li>
<li id="n_239" class="hl">            <span class="hl opt">}</span></li>
<li id="n_240" class="hl">        <span class="hl opt">}</span></li>
<li id="n_241" class="hl">      </li>
<li id="n_242" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} = </span></li>
<li id="n_243" 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;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_244" class="hl">    </li>
<li id="n_245" 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;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_246" class="hl"></li>
<li id="n_247" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>totalqty<span class="hl opt">} += </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_248" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>totalship<span class="hl opt">} += </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_249" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>totalweight<span class="hl opt">} += (</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_250" class="hl">                <span class="hl opt">* </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;weight_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_251" class="hl"></li>
<li id="n_252" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>totalweightship<span class="hl opt">} += (</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_253" class="hl">                <span class="hl opt">* </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;weight_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_254" class="hl"></li>
<li id="n_255" class="hl">            <span class="hl slc"># add number, description and qty to $form-&gt;{number}...</span></li>
<li id="n_256" 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>runningnumber<span class="hl opt">} }, </span><span class="hl kwb">$runningnumber++</span><span class="hl opt">);</span></li>
<li id="n_257" 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>number<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;partnumber_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_258" 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>sku<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;sku_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_259" 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>serialnumber<span class="hl opt">} }, </span></li>
<li id="n_260" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;serialnumber_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_261" class="hl"></li>
<li id="n_262" 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>bin<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;bin_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_263" 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>description<span class="hl opt">} }, </span></li>
<li id="n_264" class="hl">                <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_265" 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>itemnotes<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;notes_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_266" 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>qty<span class="hl opt">} }, </span></li>
<li id="n_267" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_268" class="hl">                    <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;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}));</span></li>
<li id="n_269" class="hl"></li>
<li id="n_270" 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>ship<span class="hl opt">} }, </span></li>
<li id="n_271" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_272" class="hl">                    <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;qty_</span><span class="hl ipl">$i</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 kwc">push</span><span class="hl opt">(&#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>unit<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;unit_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_275" 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>deliverydate<span class="hl opt">} }, </span></li>
<li id="n_276" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;deliverydate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_277" class="hl"></li>
<li id="n_278" 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>projectnumber<span class="hl opt">} }, </span></li>
<li id="n_279" 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_280" class="hl">      </li>
<li id="n_281" 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>sellprice<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;sellprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_282" class="hl">      </li>
<li id="n_283" 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>listprice<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;listprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_284" class="hl">      </li>
<li id="n_285" 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>weight<span class="hl opt">} }, </span></li>
<li id="n_286" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_287" class="hl">                    <span class="hl kwb">$myconfig</span><span class="hl opt">, </span></li>
<li id="n_288" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;weight_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_289" class="hl">                        <span class="hl opt">* </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}));</span></li>
<li id="n_290" class="hl"></li>
<li id="n_291" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$sellprice </span><span class="hl opt">= </span></li>
<li id="n_292" 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></li>
<li id="n_293" class="hl">                    <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;sellprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_294" class="hl"></li>
<li id="n_295" class="hl">            <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$dec</span><span class="hl opt">) = (</span><span class="hl kwb">$sellprice </span><span class="hl opt">=~ </span><span class="hl kwd">/\.(\d+)/</span><span class="hl opt">);</span></li>
<li id="n_296" class="hl">            <span class="hl kwb">$dec </span><span class="hl opt">= </span><span class="hl kwc">length </span><span class="hl kwb">$dec</span><span class="hl opt">;</span></li>
<li id="n_297" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$decimalplaces </span><span class="hl opt">= (</span><span class="hl kwb">$dec </span><span class="hl opt">&gt; </span><span class="hl num">2</span><span class="hl opt">) ? </span><span class="hl kwb">$dec </span><span class="hl opt">: </span><span class="hl num">2</span><span class="hl opt">;</span></li>
<li id="n_298" class="hl">      </li>
<li id="n_299" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$discount </span><span class="hl opt">= </span></li>
<li id="n_300" 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_301" class="hl">                    <span class="hl kwb">$sellprice </span></li>
<li id="n_302" 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></li>
<li id="n_303" class="hl">                            <span class="hl kwb">$myconfig</span><span class="hl opt">, </span></li>
<li id="n_304" class="hl">                            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;discount_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">})</span></li>
<li id="n_305" class="hl">                        <span class="hl opt">/</span><span class="hl num">100</span><span class="hl opt">, </span></li>
<li id="n_306" class="hl">                    <span class="hl kwb">$decimalplaces</span><span class="hl opt">);</span></li>
<li id="n_307" class="hl">      </li>
<li id="n_308" class="hl">            <span class="hl slc"># keep a netprice as well, (sellprice - discount)</span></li>
<li id="n_309" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;netprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} = </span><span class="hl kwb">$sellprice </span><span class="hl opt">- </span><span class="hl kwb">$discount</span><span class="hl opt">;</span></li>
<li id="n_310" class="hl">      </li>
<li id="n_311" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$linetotal </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></li>
<li id="n_312" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</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;netprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_313" class="hl"></li>
<li id="n_314" 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;inventory_accno_id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_315" class="hl">                        <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;assembly_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_316" class="hl"></li>
<li id="n_317" 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>part<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;sku_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_318" 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>service<span class="hl opt">} }, </span>NULL<span class="hl opt">);</span></li>
<li id="n_319" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>totalparts<span class="hl opt">} += </span><span class="hl kwb">$linetotal</span><span class="hl opt">;</span></li>
<li id="n_320" class="hl">            <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_321" 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>service<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;sku_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_322" 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>part<span class="hl opt">} }, </span>NULL<span class="hl opt">);</span></li>
<li id="n_323" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>totalservices<span class="hl opt">} += </span><span class="hl kwb">$linetotal</span><span class="hl opt">;</span></li>
<li id="n_324" class="hl">            <span class="hl opt">}</span></li>
<li id="n_325" class="hl"></li>
<li id="n_326" 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>netprice<span class="hl opt">} }, </span></li>
<li id="n_327" class="hl">                <span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;netprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) </span></li>
<li id="n_328" class="hl">                <span class="hl opt">? </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_329" class="hl">                    <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;netprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span></li>
<li id="n_330" class="hl">                    <span class="hl kwb">$decimalplaces</span><span class="hl opt">) </span></li>
<li id="n_331" class="hl">                <span class="hl opt">: </span><span class="hl sng">&quot; &quot;</span><span class="hl opt">);</span></li>
<li id="n_332" class="hl">      </li>
<li id="n_333" class="hl">            <span class="hl kwb">$discount </span><span class="hl opt">= </span></li>
<li id="n_334" class="hl">                <span class="hl opt">(</span><span class="hl kwb">$discount</span><span class="hl opt">) </span></li>
<li id="n_335" class="hl">                <span class="hl opt">? </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_336" class="hl">                    <span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$discount </span><span class="hl opt">* -</span><span class="hl num">1</span><span class="hl opt">, </span></li>
<li id="n_337" class="hl">                    <span class="hl kwb">$decimalplaces</span><span class="hl opt">) </span></li>
<li id="n_338" class="hl">                <span class="hl opt">: </span><span class="hl sng">&quot; &quot;</span><span class="hl opt">;</span></li>
<li id="n_339" class="hl">            <span class="hl kwb">$linetotal </span><span class="hl opt">= (</span><span class="hl kwb">$linetotal</span><span class="hl opt">) ? </span><span class="hl kwb">$linetotal </span><span class="hl opt">: </span><span class="hl sng">&quot; &quot;</span><span class="hl opt">;</span></li>
<li id="n_340" class="hl">      </li>
<li id="n_341" 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>discount<span class="hl opt">} }, </span><span class="hl kwb">$discount</span><span class="hl opt">);</span></li>
<li id="n_342" 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>discountrate<span class="hl opt">} }, </span></li>
<li id="n_343" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_344" class="hl">                    <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;discount_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}));</span></li>
<li id="n_345" class="hl"></li>
<li id="n_346" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>total<span class="hl opt">} += </span><span class="hl kwb">$linetotal</span><span class="hl opt">;</span></li>
<li id="n_347" class="hl"></li>
<li id="n_348" class="hl">            <span class="hl slc"># this is for the subtotals for grouping</span></li>
<li id="n_349" class="hl">            <span class="hl kwb">$subtotal </span><span class="hl opt">+= </span><span class="hl kwb">$linetotal</span><span class="hl opt">;</span></li>
<li id="n_350" class="hl"></li>
<li id="n_351" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;linetotal_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} = </span></li>
<li id="n_352" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$linetotal</span><span class="hl opt">, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_353" class="hl"></li>
<li id="n_354" 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>linetotal<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;linetotal_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_355" class="hl">      </li>
<li id="n_356" class="hl">            <span class="hl kwb">&#64;taxaccounts </span><span class="hl opt">= </span>Tax<span class="hl opt">::</span>init_taxes<span class="hl opt">(</span></li>
<li id="n_357" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;taxaccounts_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span></li>
<li id="n_358" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;taxaccounts&quot;</span><span class="hl opt">});</span></li>
<li id="n_359" class="hl">      </li>
<li id="n_360" 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_361" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">&#64;taxrates </span><span class="hl opt">= ();</span></li>
<li id="n_362" class="hl">      </li>
<li id="n_363" class="hl">            <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_364" class="hl">      </li>
<li id="n_365" 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_366" class="hl">                <span class="hl kwb">$taxamount </span><span class="hl opt">= </span>Tax<span class="hl opt">::</span>calculate_taxes<span class="hl opt">(</span></li>
<li id="n_367" class="hl">                    \<span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$linetotal</span><span class="hl opt">, </span><span class="hl num">1</span><span class="hl opt">);</span></li>
<li id="n_368" class="hl">                <span class="hl kwb">$taxbase </span><span class="hl opt">= (</span><span class="hl kwb">$linetotal </span><span class="hl opt">- </span><span class="hl kwb">$taxamount</span><span class="hl opt">);</span></li>
<li id="n_369" class="hl">                <span class="hl kwb">$tax </span><span class="hl opt">+= </span>Tax<span class="hl opt">::</span>extract_taxes<span class="hl opt">(</span></li>
<li id="n_370" class="hl">                    \<span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$linetotal</span><span class="hl opt">);</span></li>
<li id="n_371" class="hl">            <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_372" class="hl">                <span class="hl kwb">$taxamount </span><span class="hl opt">= </span>Tax<span class="hl opt">::</span>calculate_taxes<span class="hl opt">(</span></li>
<li id="n_373" class="hl">                    \<span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$linetotal</span><span class="hl opt">, </span><span class="hl num">0</span><span class="hl opt">);</span></li>
<li id="n_374" class="hl">                <span class="hl kwb">$tax </span><span class="hl opt">+= </span>Tax<span class="hl opt">::</span>apply_taxes<span class="hl opt">(</span></li>
<li id="n_375" class="hl">                    \<span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$linetotal</span><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 kwa">foreach </span><span class="hl kwb">$item </span><span class="hl opt">(</span><span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">) {</span></li>
<li id="n_379" class="hl">                <span class="hl kwc">push </span><span class="hl kwb">&#64;taxrates</span><span class="hl opt">, </span><span class="hl num">100 </span><span class="hl opt">* </span><span class="hl kwb">$item</span><span class="hl opt">-&gt;</span><span class="hl kwd">rate</span><span class="hl opt">;</span></li>
<li id="n_380" class="hl">                <span class="hl kwb">$taxaccounts</span><span class="hl opt">{</span><span class="hl kwb">$item</span><span class="hl opt">-&gt;</span><span class="hl kwd">account</span><span class="hl opt">} += </span><span class="hl kwb">$item</span><span class="hl opt">-&gt;</span><span class="hl kwd">value</span><span class="hl opt">;</span></li>
<li id="n_381" 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_382" class="hl">                    <span class="hl kwb">$taxbase</span><span class="hl opt">{</span><span class="hl kwb">$item</span><span class="hl opt">-&gt;</span><span class="hl kwd">account</span><span class="hl opt">} += </span><span class="hl kwb">$taxbase</span><span class="hl opt">;</span></li>
<li id="n_383" class="hl">                <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_384" class="hl">                    <span class="hl kwb">$taxbase</span><span class="hl opt">{</span><span class="hl kwb">$item</span><span class="hl opt">-&gt;</span><span class="hl kwd">account</span><span class="hl opt">} += </span><span class="hl kwb">$linetotal</span><span class="hl opt">;</span></li>
<li id="n_385" class="hl">                <span class="hl opt">}</span></li>
<li id="n_386" class="hl">            <span class="hl opt">}</span></li>
<li id="n_387" class="hl"></li>
<li id="n_388" 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>lineitems<span class="hl opt">} }, </span></li>
<li id="n_389" class="hl">                <span class="hl opt">{ </span>amount <span class="hl opt">=&gt; </span><span class="hl kwb">$linetotal</span><span class="hl opt">, </span></li>
<li id="n_390" class="hl">                tax <span class="hl opt">=&gt; </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">$tax</span><span class="hl opt">, </span><span class="hl num">2</span><span class="hl opt">) });</span></li>
<li id="n_391" class="hl"></li>
<li id="n_392" 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>taxrates<span class="hl opt">} }, </span></li>
<li id="n_393" class="hl">                <span class="hl kwc">join</span><span class="hl sng">&#39; &#39;</span><span class="hl opt">, </span><span class="hl kwc">sort </span><span class="hl opt">{ </span><span class="hl kwb">$a </span><span class="hl opt">&lt;=&gt; </span><span class="hl kwb">$b </span><span class="hl opt">} </span><span class="hl kwb">&#64;taxrates</span><span class="hl opt">);</span></li>
<li id="n_394" class="hl">      </li>
<li id="n_395" 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;assembly_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_396" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>stagger<span class="hl opt">} = -</span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_397" class="hl">                <span class="hl opt">&amp;</span>assembly_details<span class="hl opt">(</span></li>
<li id="n_398" class="hl">                    <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">$dbh</span><span class="hl opt">, </span></li>
<li id="n_399" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span></li>
<li id="n_400" class="hl">                    <span class="hl kwb">$oid</span><span class="hl opt">{</span><span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;{</span>dbdriver<span class="hl opt">}}, </span></li>
<li id="n_401" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_402" class="hl">            <span class="hl opt">}</span></li>
<li id="n_403" class="hl"></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"># add subtotal</span></li>
<li id="n_407" 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>groupprojectnumber<span class="hl opt">} || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>grouppartsgroup<span class="hl opt">}) {</span></li>
<li id="n_408" class="hl">            <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$subtotal</span><span class="hl opt">) {</span></li>
<li id="n_409" class="hl">                <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$j </span><span class="hl opt">&lt; </span><span class="hl kwb">$k</span><span class="hl opt">) {</span></li>
<li id="n_410" class="hl">                    <span class="hl slc"># look at next item</span></li>
<li id="n_411" class="hl">                    <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$sortlist</span><span class="hl opt">[</span><span class="hl kwb">$j</span><span class="hl opt">]-&gt;[</span><span class="hl num">1</span><span class="hl opt">] </span><span class="hl kwc">ne </span><span class="hl kwb">$sameitem</span><span class="hl opt">) {</span></li>
<li id="n_412" class="hl"></li>
<li id="n_413" 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;inventory_accno_id_</span><span class="hl ipl">$j</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;assembly_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_414" class="hl"></li>
<li id="n_415" class="hl"></li>
<li id="n_416" 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>part<span class="hl opt">} },</span></li>
<li id="n_417" class="hl">                                <span class="hl sng">&quot;&quot;</span><span class="hl opt">);</span></li>
<li id="n_418" 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>service<span class="hl opt">}}, </span></li>
<li id="n_419" class="hl">                                NULL<span class="hl opt">);</span></li>
<li id="n_420" class="hl">                        <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_421" 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>service<span class="hl opt">}}, </span></li>
<li id="n_422" class="hl">                                <span class="hl sng">&quot;&quot;</span><span class="hl opt">);</span></li>
<li id="n_423" class="hl"></li>
<li id="n_424" 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>part<span class="hl opt">} },</span></li>
<li id="n_425" class="hl">                                NULL<span class="hl opt">);</span></li>
<li id="n_426" class="hl">                        <span class="hl opt">}</span></li>
<li id="n_427" class="hl"></li>
<li id="n_428" class="hl">                        <span class="hl kwa">for </span><span class="hl opt">(</span></li>
<li id="n_429" class="hl">                            <span class="hl sng">qw(taxrates </span></li>
<li id="n_430" class="hl"><span class="hl sng">                            runningnumber number sku</span></li>
<li id="n_431" class="hl"><span class="hl sng">                            serialnumber bin qty </span></li>
<li id="n_432" class="hl"><span class="hl sng">                            ship unit deliverydate </span></li>
<li id="n_433" class="hl"><span class="hl sng">                            projectnumber sellprice </span></li>
<li id="n_434" class="hl"><span class="hl sng">                            listprice netprice </span></li>
<li id="n_435" class="hl"><span class="hl sng">                            discount discountrate </span></li>
<li id="n_436" class="hl"><span class="hl sng">                            weight itemnotes)</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 kwc">push</span><span class="hl opt">(&#64;{ </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_440" class="hl">                                <span class="hl sng">&quot;&quot;</span><span class="hl opt">) </span></li>
<li id="n_441" class="hl">                        <span class="hl opt">}</span></li>
<li id="n_442" class="hl">        </li>
<li id="n_443" 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>description<span class="hl opt">} }, </span></li>
<li id="n_444" class="hl">                            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>groupsubtotaldescription<span class="hl opt">});</span></li>
<li id="n_445" class="hl"></li>
<li id="n_446" 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>lineitems<span class="hl opt">} }, </span></li>
<li id="n_447" class="hl">                            <span class="hl opt">{ </span>amount <span class="hl opt">=&gt; </span><span class="hl num">0</span><span class="hl opt">, </span></li>
<li id="n_448" class="hl">                                tax <span class="hl opt">=&gt; </span><span class="hl num">0 </span><span class="hl opt">});</span></li>
<li id="n_449" class="hl"></li>
<li id="n_450" class="hl"></li>
<li id="n_451" 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>groupsubtotaldescription<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_452" class="hl"></li>
<li id="n_453" 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>linetotal<span class="hl opt">} }, </span></li>
<li id="n_454" class="hl">                                <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_455" class="hl">                                    <span class="hl kwb">$myconfig</span><span class="hl opt">, </span></li>
<li id="n_456" class="hl">                                    <span class="hl kwb">$subtotal</span><span class="hl opt">, </span></li>
<li id="n_457" class="hl">                                    <span class="hl num">2</span><span class="hl opt">));</span></li>
<li id="n_458" class="hl">                        <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_459" 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>linetotal<span class="hl opt">}}, </span></li>
<li id="n_460" class="hl">                                <span class="hl sng">&quot;&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">$subtotal </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_463" class="hl">                    <span class="hl opt">}</span></li>
<li id="n_464" class="hl">      </li>
<li id="n_465" class="hl">                <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_466" class="hl"></li>
<li id="n_467" class="hl">                    <span class="hl slc"># got last item</span></li>
<li id="n_468" 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>groupsubtotaldescription<span class="hl opt">} </span></li>
<li id="n_469" class="hl">                                    <span class="hl kwc">ne </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">) {</span></li>
<li id="n_470" class="hl"></li>
<li id="n_471" 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;inventory_accno_id_</span><span class="hl ipl">$j</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;assembly_</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">push</span><span class="hl opt">(&#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>part<span class="hl opt">} },</span></li>
<li id="n_474" class="hl">                                <span class="hl sng">&quot;&quot;</span><span class="hl opt">);</span></li>
<li id="n_475" class="hl"></li>
<li id="n_476" 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>service<span class="hl opt">}}, </span></li>
<li id="n_477" class="hl">                                NULL<span class="hl opt">);</span></li>
<li id="n_478" class="hl">                        <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_479" 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>service<span class="hl opt">}}, </span></li>
<li id="n_480" class="hl">                                <span class="hl sng">&quot;&quot;</span><span class="hl opt">);</span></li>
<li id="n_481" class="hl"></li>
<li id="n_482" 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>part<span class="hl opt">} },</span></li>
<li id="n_483" class="hl">                                NULL<span class="hl opt">);</span></li>
<li id="n_484" class="hl">                        <span class="hl opt">}</span></li>
<li id="n_485" class="hl"></li>
<li id="n_486" class="hl">                        <span class="hl kwa">for </span><span class="hl opt">(</span></li>
<li id="n_487" class="hl">                            <span class="hl sng">qw(taxrates </span></li>
<li id="n_488" class="hl"><span class="hl sng">                            runningnumber number sku</span></li>
<li id="n_489" class="hl"><span class="hl sng">                            serialnumber bin qty </span></li>
<li id="n_490" class="hl"><span class="hl sng">                            ship unit deliverydate </span></li>
<li id="n_491" class="hl"><span class="hl sng">                            projectnumber sellprice </span></li>
<li id="n_492" class="hl"><span class="hl sng">                            listprice netprice </span></li>
<li id="n_493" class="hl"><span class="hl sng">                            discount discountrate </span></li>
<li id="n_494" class="hl"><span class="hl sng">                            weight itemnotes)</span></li>
<li id="n_495" class="hl">                        <span class="hl opt">) {</span></li>
<li id="n_496" class="hl"></li>
<li id="n_497" 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><span class="hl kwb">$_</span><span class="hl opt">} }, </span></li>
<li id="n_498" class="hl">                                <span class="hl sng">&quot;&quot;</span><span class="hl opt">);</span></li>
<li id="n_499" class="hl">                        <span class="hl opt">}</span></li>
<li id="n_500" class="hl"></li>
<li id="n_501" 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>description<span class="hl opt">} }, </span></li>
<li id="n_502" class="hl">                            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>groupsubtotaldescription<span class="hl opt">});</span></li>
<li id="n_503" class="hl"></li>
<li id="n_504" 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>linetotal<span class="hl opt">} }, </span></li>
<li id="n_505" class="hl">                            <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_506" class="hl">                                <span class="hl kwb">$myconfig</span><span class="hl opt">, </span></li>
<li id="n_507" class="hl">                                <span class="hl kwb">$subtotal</span><span class="hl opt">, </span></li>
<li id="n_508" class="hl">                                <span class="hl num">2</span><span class="hl opt">));</span></li>
<li id="n_509" 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>lineitems<span class="hl opt">} }, </span></li>
<li id="n_510" class="hl">                            <span class="hl opt">{ </span>amount <span class="hl opt">=&gt; </span><span class="hl num">0</span><span class="hl opt">, </span></li>
<li id="n_511" class="hl">                                tax <span class="hl opt">=&gt; </span><span class="hl num">0 </span><span class="hl opt">});</span></li>
<li id="n_512" class="hl">                    <span class="hl opt">}</span></li>
<li id="n_513" class="hl">                <span class="hl opt">}</span></li>
<li id="n_514" class="hl">            <span class="hl opt">}</span></li>
<li id="n_515" class="hl">        <span class="hl opt">}</span></li>
<li id="n_516" class="hl">    <span class="hl opt">}</span></li>
<li id="n_517" class="hl"></li>
<li id="n_518" class="hl">   </li>
<li id="n_519" class="hl">    <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_520" class="hl">    <span class="hl kwa">foreach </span><span class="hl kwc">my </span><span class="hl kwb">$item </span><span class="hl opt">(</span><span class="hl kwc">sort keys </span><span class="hl kwb">%taxaccounts</span><span class="hl opt">) {</span></li>
<li id="n_521" 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 kwd">round_amount</span><span class="hl opt">(</span><span class="hl kwb">$taxaccounts</span><span class="hl opt">{</span><span class="hl kwb">$item</span><span class="hl opt">}, </span><span class="hl num">2</span><span class="hl opt">)) {</span></li>
<li id="n_522" class="hl">            <span class="hl kwb">$tax </span><span class="hl opt">+= </span><span class="hl kwb">$taxamount </span><span class="hl opt">= </span></li>
<li id="n_523" 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">$taxaccounts</span><span class="hl opt">{</span><span class="hl kwb">$item</span><span class="hl opt">}, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_524" class="hl">      </li>
<li id="n_525" 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>taxbaseinclusive<span class="hl opt">} }, </span></li>
<li id="n_526" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${item}_taxbaseinclusive&quot;</span><span class="hl opt">} </span></li>
<li id="n_527" class="hl">                    <span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_528" class="hl">                        <span class="hl kwb">$myconfig</span><span class="hl opt">, </span></li>
<li id="n_529" class="hl">                        <span class="hl kwb">$taxbase</span><span class="hl opt">{</span><span class="hl kwb">$item</span><span class="hl opt">} + </span><span class="hl kwb">$tax</span><span class="hl opt">, </span><span class="hl num">2</span><span class="hl opt">));</span></li>
<li id="n_530" class="hl"></li>
<li id="n_531" 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>taxbase<span class="hl opt">} }, </span></li>
<li id="n_532" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${item}_taxbase&quot;</span><span class="hl opt">} </span></li>
<li id="n_533" class="hl">                    <span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_534" class="hl">                        <span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$taxbase</span><span class="hl opt">{</span><span class="hl kwb">$item</span><span class="hl opt">}, </span><span class="hl num">2</span><span class="hl opt">));</span></li>
<li id="n_535" class="hl"></li>
<li id="n_536" 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>tax<span class="hl opt">} }, </span></li>
<li id="n_537" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${item}_tax&quot;</span><span class="hl opt">} </span></li>
<li id="n_538" class="hl">                    <span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_539" class="hl">                        <span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$taxamount</span><span class="hl opt">, </span><span class="hl num">2</span><span class="hl opt">));</span></li>
<li id="n_540" class="hl">      </li>
<li id="n_541" 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>taxdescription<span class="hl opt">} }, </span></li>
<li id="n_542" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${item}_description&quot;</span><span class="hl opt">});</span></li>
<li id="n_543" class="hl">      </li>
<li id="n_544" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${item}_taxrate&quot;</span><span class="hl opt">} </span></li>
<li id="n_545" class="hl">                <span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_546" class="hl">                    <span class="hl kwb">$myconfig</span><span class="hl opt">, </span></li>
<li id="n_547" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${item}_rate&quot;</span><span class="hl opt">} * </span><span class="hl num">100</span><span class="hl opt">);</span></li>
<li id="n_548" 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>taxrate<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${item}_taxrate&quot;</span><span class="hl opt">});</span></li>
<li id="n_549" 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>taxnumber<span class="hl opt">} }, </span></li>
<li id="n_550" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;${item}_taxnumber&quot;</span><span class="hl opt">});</span></li>
<li id="n_551" class="hl">        <span class="hl opt">}</span></li>
<li id="n_552" class="hl">    <span class="hl opt">}</span></li>
<li id="n_553" class="hl">    </li>
<li id="n_554" class="hl">    <span class="hl slc"># adjust taxes for lineitems</span></li>
<li id="n_555" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$total </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_556" 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>lineitems<span class="hl opt">} }) {</span></li>
<li id="n_557" class="hl">        <span class="hl kwb">$total </span><span class="hl opt">+= </span><span class="hl kwb">$_</span><span class="hl opt">-&gt;{</span>tax<span class="hl opt">};</span></li>
<li id="n_558" class="hl">    <span class="hl opt">}</span></li>
<li id="n_559" 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 kwd">round_amount</span><span class="hl opt">(</span><span class="hl kwb">$total</span><span class="hl opt">,</span><span class="hl num">2</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">$tax</span><span class="hl opt">,</span><span class="hl num">2</span><span class="hl opt">)) {</span></li>
<li id="n_560" class="hl">        <span class="hl slc"># get largest amount</span></li>
<li id="n_561" class="hl">        <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl kwc">reverse sort </span><span class="hl opt">{ </span><span class="hl kwb">$a</span><span class="hl opt">-&gt;{</span>tax<span class="hl opt">} &lt;=&gt; </span><span class="hl kwb">$b</span><span class="hl opt">-&gt;{</span>tax<span class="hl opt">} } </span></li>
<li id="n_562" class="hl">                        <span class="hl opt">&#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>lineitems<span class="hl opt">} }) {</span></li>
<li id="n_563" class="hl"></li>
<li id="n_564" class="hl">            <span class="hl kwb">$_</span><span class="hl opt">-&gt;{</span>tax<span class="hl opt">} -= </span><span class="hl kwb">$total </span><span class="hl opt">- </span><span class="hl kwb">$tax</span><span class="hl opt">;</span></li>
<li id="n_565" class="hl">            <span class="hl kwa">last</span><span class="hl opt">;</span></li>
<li id="n_566" class="hl">        <span class="hl opt">}</span></li>
<li id="n_567" class="hl">    <span class="hl opt">}</span></li>
<li id="n_568" class="hl">    <span class="hl kwb">$i </span><span class="hl opt">= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_569" 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>lineitems<span class="hl opt">} }) {</span></li>
<li id="n_570" 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>linetax<span class="hl opt">} }, </span></li>
<li id="n_571" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$_</span><span class="hl opt">-&gt;{</span>tax<span class="hl opt">}, </span><span class="hl num">2</span><span class="hl opt">, </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">));</span></li>
<li id="n_572" class="hl">    <span class="hl opt">}</span></li>
<li id="n_573" class="hl">  </li>
<li id="n_574" class="hl"> </li>
<li id="n_575" 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_576" 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;paid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_577" 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>payment<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_578" 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 kwb">$description</span><span class="hl opt">) </span></li>
<li id="n_579" class="hl">                <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;AR_paid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_580" class="hl"></li>
<li id="n_581" 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>paymentaccount<span class="hl opt">} }, </span><span class="hl kwb">$description</span><span class="hl opt">); </span></li>
<li id="n_582" 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>paymentdate<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_583" 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>paymentsource<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_584" 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>paymentmemo<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_585" class="hl"></li>
<li id="n_586" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paid<span class="hl opt">} </span></li>
<li id="n_587" 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></li>
<li id="n_588" class="hl">                    <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_589" class="hl">        <span class="hl opt">}</span></li>
<li id="n_590" class="hl">    <span class="hl opt">}</span></li>
<li id="n_591" class="hl"></li>
<li id="n_592" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(totalparts totalservices)</span><span class="hl opt">) { </span></li>
<li id="n_593" class="hl">        <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">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_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 kwb">$_</span><span class="hl opt">}, </span><span class="hl num">2</span><span class="hl opt">); </span></li>
<li id="n_594" class="hl">    <span class="hl opt">}</span></li>
<li id="n_595" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(totalqty totalship totalweight)</span><span class="hl opt">) { </span></li>
<li id="n_596" class="hl">        <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">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_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 kwb">$_</span><span class="hl opt">});</span></li>
<li id="n_597" class="hl">    <span class="hl opt">}</span></li>
<li id="n_598" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>subtotal<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_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>total<span class="hl opt">}, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_599" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invtotal<span class="hl opt">} = </span></li>
<li id="n_600" class="hl">        <span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>taxincluded<span class="hl opt">}) ? </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>total<span class="hl opt">} : </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>total<span class="hl opt">} + </span><span class="hl kwb">$tax</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">$c</span><span class="hl opt">;</span></li>
<li id="n_603" 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>language_code<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_604" class="hl">        <span class="hl kwb">$c </span><span class="hl opt">= </span>new CP <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>language_code<span class="hl opt">};</span></li>
<li id="n_605" class="hl">    <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_606" class="hl">        <span class="hl kwb">$c </span><span class="hl opt">= </span>new CP <span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;{</span>countrycode<span class="hl opt">};</span></li>
<li id="n_607" class="hl">    <span class="hl opt">}</span></li>
<li id="n_608" class="hl">    <span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">init</span><span class="hl opt">;</span></li>
<li id="n_609" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$whole</span><span class="hl opt">;</span></li>
<li id="n_610" class="hl">    <span class="hl opt">(</span><span class="hl kwb">$whole</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>decimal<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>invtotal<span class="hl opt">};</span></li>
<li id="n_611" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>decimal<span class="hl opt">} .= </span><span class="hl sng">&quot;00&quot;</span><span class="hl opt">;</span></li>
<li id="n_612" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>decimal<span class="hl opt">} = </span><span class="hl kwc">substr</span><span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>decimal<span class="hl opt">}, </span><span class="hl num">0</span><span class="hl opt">, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_613" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>text_decimal<span class="hl opt">} = </span><span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">num2text</span><span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>decimal<span class="hl opt">} * </span><span class="hl num">1</span><span class="hl opt">);</span></li>
<li id="n_614" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>text_amount<span class="hl opt">} = </span><span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">num2text</span><span class="hl opt">(</span><span class="hl kwb">$whole</span><span class="hl opt">);</span></li>
<li id="n_615" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>integer_amount<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$whole</span><span class="hl opt">);</span></li>
<li id="n_616" class="hl"> </li>
<li id="n_617" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_string</span><span class="hl opt">(</span><span class="hl sng">qw(text_amount text_decimal)</span><span class="hl opt">);</span></li>
<li id="n_618" class="hl"></li>
<li id="n_619" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>total<span class="hl opt">} </span></li>
<li id="n_620" class="hl">        <span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_621" class="hl">            <span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invtotal<span class="hl opt">} - </span><span class="hl kwb">$form</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_622" class="hl"></li>
<li id="n_623" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invtotal<span class="hl opt">} </span></li>
<li id="n_624" class="hl">        <span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_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>invtotal<span class="hl opt">}, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_625" class="hl"></li>
<li id="n_626" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paid<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_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>paid<span class="hl opt">}, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_627" class="hl"></li>
<li id="n_628" 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_629" class="hl">  </li>
<li id="n_630" class="hl"><span class="hl opt">}</span></li>
<li id="n_631" class="hl"></li>
<li id="n_632" class="hl"></li>
<li id="n_633" class="hl"><span class="hl kwa">sub </span>assembly_details <span class="hl opt">{</span></li>
<li id="n_634" class="hl">    <span class="hl kwc">my </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">$dbh2</span><span class="hl opt">, </span><span class="hl kwb">$id</span><span class="hl opt">, </span><span class="hl kwb">$oid</span><span class="hl opt">, </span><span class="hl kwb">$qty</span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_635" class="hl">    <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_636" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sm </span><span class="hl opt">= </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_637" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$spacer</span><span class="hl opt">;</span></li>
<li id="n_638" class="hl">  </li>
<li id="n_639" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>stagger<span class="hl opt">}++;</span></li>
<li id="n_640" 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>format<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;html&#39;</span><span class="hl opt">) {</span></li>
<li id="n_641" class="hl">        <span class="hl kwb">$spacer </span><span class="hl opt">= </span><span class="hl sng">&quot;&amp;nbsp;&quot;</span> x <span class="hl opt">(</span><span class="hl num">3 </span><span class="hl opt">* (</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>stagger<span class="hl opt">} - </span><span class="hl num">1</span><span class="hl opt">)) </span></li>
<li id="n_642" class="hl">            <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>stagger<span class="hl opt">} &gt; </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_643" class="hl">    <span class="hl opt">}</span></li>
<li id="n_644" 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>format<span class="hl opt">} =~ </span><span class="hl kwd">/(postscript|pdf)/</span><span class="hl opt">) {</span></li>
<li id="n_645" 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>stagger<span class="hl opt">} &gt; </span><span class="hl num">1</span><span class="hl opt">) {</span></li>
<li id="n_646" class="hl">            <span class="hl kwb">$spacer </span><span class="hl opt">= (</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>stagger<span class="hl opt">} - </span><span class="hl num">1</span><span class="hl opt">) * </span><span class="hl num">3</span><span class="hl opt">;</span></li>
<li id="n_647" class="hl">            <span class="hl kwb">$spacer </span><span class="hl opt">= </span><span class="hl sng">&#39;</span><span class="hl esc">\r</span><span class="hl sng">ule{&#39;</span><span class="hl opt">.</span><span class="hl kwb">$spacer</span><span class="hl opt">.</span><span class="hl sng">&#39;mm}{0mm}&#39;</span><span class="hl opt">;</span></li>
<li id="n_648" class="hl">        <span class="hl opt">}</span></li>
<li id="n_649" class="hl">    <span class="hl opt">}</span></li>
<li id="n_650" class="hl">  </li>
<li id="n_651" class="hl">  <span class="hl slc"># get parts and push them onto the stack</span></li>
<li id="n_652" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sortorder </span><span class="hl opt">= </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_653" class="hl"></li>
<li id="n_654" 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>grouppartsgroup<span class="hl opt">}) {</span></li>
<li id="n_655" class="hl">        <span class="hl kwb">$sortorder </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>ORDER BY pg<span class="hl opt">.</span>partsgroup<span class="hl opt">|;</span></li>
<li id="n_656" class="hl">    <span class="hl opt">}</span></li>
<li id="n_657" class="hl">  </li>
<li id="n_658" 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_659" class="hl">           SELECT p<span class="hl opt">.</span>partnumber<span class="hl opt">, </span>p<span class="hl opt">.</span>description<span class="hl opt">, </span>p<span class="hl opt">.</span>unit<span class="hl opt">, </span>a<span class="hl opt">.</span>qty<span class="hl opt">,</span></li>
<li id="n_660" class="hl">                  pg<span class="hl opt">.</span>partsgroup<span class="hl opt">, </span>p<span class="hl opt">.</span>partnumber AS sku</li>
<li id="n_661" class="hl">             FROM assembly a</li>
<li id="n_662" class="hl">             JOIN parts p ON <span class="hl opt">(</span>a<span class="hl opt">.</span>parts_id <span class="hl opt">= </span>p<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_663" class="hl">        LEFT JOIN partsgroup pg ON <span class="hl opt">(</span>p<span class="hl opt">.</span>partsgroup_id <span class="hl opt">= </span>pg<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_664" class="hl">            WHERE a<span class="hl opt">.</span>bom <span class="hl opt">= </span><span class="hl sng">&#39;1&#39;</span></li>
<li id="n_665" class="hl">              AND a<span class="hl opt">.</span>id <span class="hl opt">= ?</span></li>
<li id="n_666" class="hl">        <span class="hl kwb">$sortorder</span><span class="hl opt">|;</span></li>
<li id="n_667" 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_668" 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">$id</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_669" class="hl"></li>
<li id="n_670" 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_671" class="hl"></li>
<li id="n_672" class="hl">        <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(partnumber description partsgroup)</span><span class="hl opt">) {</span></li>
<li id="n_673" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;a_</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_674" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_string</span><span class="hl opt">(</span><span class="hl sng">&quot;a_</span><span class="hl ipl">$_</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_675" class="hl">        <span class="hl opt">}</span></li>
<li id="n_676" class="hl"></li>
<li id="n_677" 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>grouppartsgroup<span class="hl opt">} &amp;&amp; </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>partsgroup<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl kwb">$sm</span><span class="hl opt">) {</span></li>
<li id="n_678" class="hl">            <span class="hl kwa">for </span><span class="hl opt">(</span></li>
<li id="n_679" class="hl">                <span class="hl sng">qw(taxrates runningnumber number sku </span></li>
<li id="n_680" class="hl"><span class="hl sng">                serialnumber unit qty ship bin deliverydate </span></li>
<li id="n_681" class="hl"><span class="hl sng">                projectnumber sellprice listprice netprice </span></li>
<li id="n_682" class="hl"><span class="hl sng">                discount discountrate linetotal weight </span></li>
<li id="n_683" class="hl"><span class="hl sng">                itemnotes)</span></li>
<li id="n_684" class="hl">            <span class="hl opt">) { </span></li>
<li id="n_685" class="hl"></li>
<li id="n_686" 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><span class="hl kwb">$_</span><span class="hl opt">} }, </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">); </span></li>
<li id="n_687" class="hl">            <span class="hl opt">}</span></li>
<li id="n_688" class="hl">            <span class="hl kwb">$sm </span><span class="hl opt">= </span></li>
<li id="n_689" class="hl">                <span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;a_partsgroup&quot;</span><span class="hl opt">}) </span></li>
<li id="n_690" class="hl">                <span class="hl opt">? </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;a_partsgroup&quot;</span><span class="hl opt">} </span></li>
<li id="n_691" class="hl">                <span class="hl opt">: </span><span class="hl sng">&quot;--&quot;</span><span class="hl opt">;</span></li>
<li id="n_692" class="hl"></li>
<li id="n_693" 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>description<span class="hl opt">} }, </span><span class="hl sng">&quot;</span><span class="hl ipl">$spacer$sm</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_694" 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>lineitems<span class="hl opt">} }, </span></li>
<li id="n_695" class="hl">                <span class="hl opt">{ </span>amount <span class="hl opt">=&gt; </span><span class="hl num">0</span><span class="hl opt">, </span>tax <span class="hl opt">=&gt; </span><span class="hl num">0 </span><span class="hl opt">});</span></li>
<li id="n_696" class="hl">        <span class="hl opt">}</span></li>
<li id="n_697" class="hl">    </li>
<li id="n_698" 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>stagger<span class="hl opt">}) {</span></li>
<li id="n_699" class="hl">      </li>
<li id="n_700" 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>description<span class="hl opt">} }, </span></li>
<li id="n_701" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span></li>
<li id="n_702" class="hl">                    <span class="hl kwb">$myconfig</span><span class="hl opt">, </span></li>
<li id="n_703" class="hl">                    <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>qty<span class="hl opt">} * </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) </span></li>
<li id="n_704" class="hl">                    <span class="hl opt">.</span>qq<span class="hl opt">| -- </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;a_partnumber&quot;</span><span class="hl opt">}|</span></li>
<li id="n_705" class="hl">                    <span class="hl opt">.</span>qq<span class="hl opt">|, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;a_description&quot;</span><span class="hl opt">}|);</span></li>
<li id="n_706" class="hl"></li>
<li id="n_707" class="hl">            <span class="hl kwa">for </span><span class="hl opt">(</span></li>
<li id="n_708" class="hl">                <span class="hl sng">qw(taxrates runningnumber number sku </span></li>
<li id="n_709" class="hl"><span class="hl sng">                serialnumber unit qty ship bin deliverydate </span></li>
<li id="n_710" class="hl"><span class="hl sng">                projectnumber sellprice listprice netprice </span></li>
<li id="n_711" class="hl"><span class="hl sng">                discount discountrate linetotal weight </span></li>
<li id="n_712" class="hl"><span class="hl sng">                itemnotes)</span></li>
<li id="n_713" class="hl">            <span class="hl opt">) { </span></li>
<li id="n_714" 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><span class="hl kwb">$_</span><span class="hl opt">} }, </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">); </span></li>
<li id="n_715" class="hl">            <span class="hl opt">}</span></li>
<li id="n_716" class="hl">      </li>
<li id="n_717" class="hl">        <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_718" class="hl">      </li>
<li id="n_719" 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>description<span class="hl opt">} }, </span></li>
<li id="n_720" class="hl">                qq<span class="hl opt">|</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;a_description&quot;</span><span class="hl opt">}|);</span></li>
<li id="n_721" class="hl"></li>
<li id="n_722" 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>number<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;a_partnumber&quot;</span><span class="hl opt">});</span></li>
<li id="n_723" 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>sku<span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;a_partnumber&quot;</span><span class="hl opt">});</span></li>
<li id="n_724" class="hl"></li>
<li id="n_725" class="hl">            <span class="hl kwa">for </span><span class="hl opt">(</span></li>
<li id="n_726" class="hl">                <span class="hl sng">qw(taxrates runningnumber ship serialnumber </span></li>
<li id="n_727" class="hl"><span class="hl sng">                reqdate projectnumber sellprice listprice </span></li>
<li id="n_728" class="hl"><span class="hl sng">                netprice discount discountrate linetotal weight </span></li>
<li id="n_729" class="hl"><span class="hl sng">                itemnotes)</span></li>
<li id="n_730" class="hl">            <span class="hl opt">) { </span></li>
<li id="n_731" class="hl"></li>
<li id="n_732" 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><span class="hl kwb">$_</span><span class="hl opt">} }, </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">);</span></li>
<li id="n_733" class="hl">            <span class="hl opt">}</span></li>
<li id="n_734" class="hl">      </li>
<li id="n_735" class="hl">        <span class="hl opt">}</span></li>
<li id="n_736" class="hl"></li>
<li id="n_737" 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>lineitems<span class="hl opt">} }, { </span>amount <span class="hl opt">=&gt; </span><span class="hl num">0</span><span class="hl opt">, </span>tax <span class="hl opt">=&gt; </span><span class="hl num">0 </span><span class="hl opt">});</span></li>
<li id="n_738" class="hl"></li>
<li id="n_739" 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>qty<span class="hl opt">} }, </span></li>
<li id="n_740" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_amount</span><span class="hl opt">(</span><span class="hl kwb">$myconfig</span><span class="hl opt">, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>qty<span class="hl opt">} * </span><span class="hl kwb">$qty</span><span class="hl opt">));</span></li>
<li id="n_741" class="hl">    </li>
<li id="n_742" class="hl">        <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(unit bin)</span><span class="hl opt">) {</span></li>
<li id="n_743" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;a_</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_744" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">format_string</span><span class="hl opt">(</span><span class="hl sng">&quot;a_</span><span class="hl ipl">$_</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_745" 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><span class="hl kwb">$_</span><span class="hl opt">} }, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;a_</span><span class="hl ipl">$_</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_746" class="hl">        <span class="hl opt">}</span></li>
<li id="n_747" class="hl"></li>
<li id="n_748" class="hl">    <span class="hl opt">}</span></li>
<li id="n_749" 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_750" class="hl"></li>
<li id="n_751" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>stagger<span class="hl opt">}--;</span></li>
<li id="n_752" class="hl">  </li>
<li id="n_753" class="hl"><span class="hl opt">}</span></li>
<li id="n_754" class="hl"></li>
<li id="n_755" class="hl"></li>
<li id="n_756" class="hl"><span class="hl kwa">sub </span>project_description <span class="hl opt">{</span></li>
<li id="n_757" 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">$dbh2</span><span class="hl opt">, </span><span class="hl kwb">$id</span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_758" class="hl">    <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_759" 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_760" class="hl">        SELECT description</li>
<li id="n_761" class="hl">          FROM project</li>
<li id="n_762" class="hl">         WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_763" class="hl"></li>
<li id="n_764" 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_765" 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">$id</span><span class="hl opt">);</span></li>
<li id="n_766" class="hl">    <span class="hl opt">(</span><span class="hl kwb">$_</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_767" class="hl"></li>
<li id="n_768" class="hl">    <span class="hl kwb">$_</span><span class="hl opt">;</span></li>
<li id="n_769" class="hl"></li>
<li id="n_770" class="hl"><span class="hl opt">}</span></li>
<li id="n_771" class="hl"></li>
<li id="n_772" class="hl"></li>
<li id="n_773" class="hl"><span class="hl kwa">sub </span>customer_details <span class="hl opt">{</span></li>
<li id="n_774" 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_775" class="hl"></li>
<li id="n_776" 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_777" class="hl">  </li>
<li id="n_778" class="hl">    <span class="hl slc"># get rest for the customer</span></li>
<li id="n_779" 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_780" class="hl">        SELECT customernumber<span class="hl opt">, </span>name<span class="hl opt">, </span>address1<span class="hl opt">, </span>address2<span class="hl opt">, </span>city<span class="hl opt">,</span></li>
<li id="n_781" class="hl">               <span class="hl kwc">state</span><span class="hl opt">, </span>zipcode<span class="hl opt">, </span>country<span class="hl opt">,</span></li>
<li id="n_782" class="hl">               contact<span class="hl opt">, </span>phone as customerphone<span class="hl opt">, </span>fax as customerfax<span class="hl opt">,</span></li>
<li id="n_783" class="hl">               taxnumber AS customertaxnumber<span class="hl opt">, </span>sic_code AS sic<span class="hl opt">, </span>iban<span class="hl opt">, </span></li>
<li id="n_784" class="hl">               bic<span class="hl opt">, </span>startdate<span class="hl opt">, </span>enddate</li>
<li id="n_785" class="hl">          FROM customer</li>
<li id="n_786" class="hl">         WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_787" 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_788" 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>customer_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_789" class="hl"></li>
<li id="n_790" 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_791" 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_792" class="hl"></li>
<li id="n_793" 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_794" 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_795" class="hl"></li>
<li id="n_796" class="hl"><span class="hl opt">}</span></li>
<li id="n_797" class="hl"></li>
<li id="n_798" class="hl"></li>
<li id="n_799" class="hl"><span class="hl kwa">sub </span>post_invoice <span class="hl opt">{</span></li>
<li id="n_800" 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_801" class="hl">  </li>
<li id="n_802" 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_803" class="hl"></li>
<li id="n_804" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$query</span><span class="hl opt">;</span></li>
<li id="n_805" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_806" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$null</span><span class="hl opt">;</span></li>
<li id="n_807" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$project_id</span><span class="hl opt">;</span></li>
<li id="n_808" class="hl">    <span class="hl kwc">my </span><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_809" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$keepcleared </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_810" class="hl">  </li>
<li id="n_811" class="hl">    <span class="hl kwb">%$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">} = ();</span></li>
<li id="n_812" class="hl"></li>
<li id="n_813" 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_814" 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_815" 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></li>
<li id="n_816" class="hl">            <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_817" class="hl">    <span class="hl opt">}</span></li>
<li id="n_818" class="hl">  </li>
<li id="n_819" 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_820" 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_821" class="hl"></li>
<li id="n_822" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_823" class="hl">        SELECT <span class="hl opt">(</span>SELECT value FROM defaults </li>
<li id="n_824" 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_825" class="hl">               AS fxgain_accno_id<span class="hl opt">, </span></li>
<li id="n_826" class="hl">               <span class="hl opt">(</span>SELECT value FROM defaults</li>
<li id="n_827" 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_828" class="hl">               AS fxloss_accno_id<span class="hl opt">|;</span></li>
<li id="n_829" 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_830" class="hl"></li>
<li id="n_831" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_832" class="hl">        SELECT p<span class="hl opt">.</span>assembly<span class="hl opt">, </span>p<span class="hl opt">.</span>inventory_accno_id<span class="hl opt">,</span></li>
<li id="n_833" class="hl">               p<span class="hl opt">.</span>income_accno_id<span class="hl opt">, </span>p<span class="hl opt">.</span>expense_accno_id<span class="hl opt">, </span>p<span class="hl opt">.</span>project_id</li>
<li id="n_834" class="hl">          FROM parts p</li>
<li id="n_835" class="hl">         WHERE p<span class="hl opt">.</span>id <span class="hl opt">= ?|;</span></li>
<li id="n_836" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$pth </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><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_837" class="hl">  </li>
<li id="n_838" 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_839" 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_840" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>SELECT id FROM ar WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_841" 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_842" 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></li>
<li id="n_843" class="hl"></li>
<li id="n_844" class="hl">        <span class="hl kwa">if </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_845" class="hl">            <span class="hl opt">&amp;</span>reverse_invoice<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">);</span></li>
<li id="n_846" class="hl">        <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_847" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>INSERT INTO ar <span class="hl opt">(</span>id<span class="hl opt">) </span>VALUES <span class="hl opt">(?)|;</span></li>
<li id="n_848" 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_849" 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_850" class="hl">        <span class="hl opt">}</span></li>
<li id="n_851" class="hl">    </li>
<li id="n_852" class="hl">    <span class="hl opt">}</span></li>
<li id="n_853" class="hl">  </li>
<li id="n_854" 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_855" 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_856" class="hl"> </li>
<li id="n_857" 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_858" class="hl">   </li>
<li id="n_859" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_860" class="hl">            INSERT INTO ar <span class="hl opt">(</span>invnumber<span class="hl opt">, </span>employee_id<span class="hl opt">) </span></li>
<li id="n_861" 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_862" 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_863" 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>employee_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_864" class="hl"></li>
<li id="n_865" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>SELECT id FROM ar 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_866" 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_867" 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_868" class="hl"></li>
<li id="n_869" 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">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_array</span><span class="hl opt">;</span></li>
<li id="n_870" 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_871" class="hl"></li>
<li id="n_872" 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 sng">&#39;ar&#39;</span><span class="hl opt">, </span><span class="hl sng">&#39;INSERT&#39;</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"></li>
<li id="n_876" 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_877" 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_878" class="hl">    <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_879" class="hl">        <span class="hl kwb">$exchangerate </span><span class="hl opt">= </span></li>
<li id="n_880" 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></li>
<li id="n_881" class="hl">                <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_882" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">}, </span><span class="hl sng">&#39;buy&#39;</span><span class="hl opt">);</span></li>
<li id="n_883" class="hl">    <span class="hl opt">}</span></li>
<li id="n_884" class="hl"></li>
<li id="n_885" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">} = </span></li>
<li id="n_886" class="hl">        <span class="hl opt">(</span><span class="hl kwb">$exchangerate</span><span class="hl opt">) </span></li>
<li id="n_887" class="hl">        <span class="hl opt">? </span><span class="hl kwb">$exchangerate </span></li>
<li id="n_888" 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_889" class="hl"></li>
<li id="n_890" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$i</span><span class="hl opt">;</span></li>
<li id="n_891" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$item</span><span class="hl opt">;</span></li>
<li id="n_892" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$allocated </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_893" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$taxrate</span><span class="hl opt">;</span></li>
<li id="n_894" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$tax</span><span class="hl opt">;</span></li>
<li id="n_895" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$fxtax</span><span class="hl opt">;</span></li>
<li id="n_896" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">;</span></li>
<li id="n_897" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$amount</span><span class="hl opt">;</span></li>
<li id="n_898" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$grossamount</span><span class="hl opt">;</span></li>
<li id="n_899" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$invamount </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_900" 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_901" class="hl">    <span class="hl kwc">my </span><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_902" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ml</span><span class="hl opt">;</span></li>
<li id="n_903" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$invoice_id</span><span class="hl opt">;</span></li>
<li id="n_904" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ndx</span><span class="hl opt">;</span></li>
<li id="n_905" class="hl"></li>
<li id="n_906" class="hl">    <span class="hl kwa">foreach </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_907" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} = </span></li>
<li id="n_908" 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;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_909" class="hl">    </li>
<li id="n_910" 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;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_911" class="hl">      </li>
<li id="n_912" class="hl">            <span class="hl kwb">$pth</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;id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_913" class="hl">            <span class="hl kwb">$ref </span><span class="hl opt">= </span><span class="hl kwb">$pth</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_914" 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 sng">&quot;${_}_</span><span class="hl ipl">$i</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_915" class="hl">            <span class="hl kwb">$pth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_916" class="hl"></li>
<li id="n_917" class="hl">            <span class="hl slc"># project</span></li>
<li id="n_918" 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;projectnumber_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_919" 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></li>
<li id="n_920" class="hl">                    <span class="hl opt">= </span><span class="hl kwc">split </span><span class="hl kwd">/--/</span><span class="hl opt">, </span></li>
<li id="n_921" 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_922" class="hl">            <span class="hl opt">}</span></li>
<li id="n_923" class="hl">            <span class="hl kwb">$project_id </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;project_id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_924" class="hl">                <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;project_id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_925" class="hl"></li>
<li id="n_926" class="hl">            <span class="hl slc"># keep entered selling price</span></li>
<li id="n_927" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$fxsellprice </span><span class="hl opt">= </span></li>
<li id="n_928" 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></li>
<li id="n_929" class="hl">                    <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;sellprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_930" class="hl"></li>
<li id="n_931" class="hl">            <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$dec</span><span class="hl opt">) = (</span><span class="hl kwb">$fxsellprice </span><span class="hl opt">=~ </span><span class="hl kwd">/\.(\d+)/</span><span class="hl opt">);</span></li>
<li id="n_932" class="hl">            <span class="hl kwb">$dec </span><span class="hl opt">= </span><span class="hl kwc">length </span><span class="hl kwb">$dec</span><span class="hl opt">;</span></li>
<li id="n_933" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$decimalplaces </span><span class="hl opt">= (</span><span class="hl kwb">$dec </span><span class="hl opt">&gt; </span><span class="hl num">2</span><span class="hl opt">) ? </span><span class="hl kwb">$dec </span><span class="hl opt">: </span><span class="hl num">2</span><span class="hl opt">;</span></li>
<li id="n_934" class="hl">      </li>
<li id="n_935" class="hl">            <span class="hl slc"># undo discount formatting</span></li>
<li id="n_936" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;discount_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} = </span></li>
<li id="n_937" 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></li>
<li id="n_938" class="hl">                    <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;discount_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">})/</span><span class="hl num">100</span><span class="hl opt">;</span></li>
<li id="n_939" class="hl">     </li>
<li id="n_940" class="hl">            <span class="hl slc"># deduct discount</span></li>
<li id="n_941" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;sellprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} = </span><span class="hl kwb">$fxsellprice </span></li>
<li id="n_942" 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></li>
<li id="n_943" class="hl">                    <span class="hl kwb">$fxsellprice </span><span class="hl opt">* </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;discount_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span></li>
<li id="n_944" class="hl">                    <span class="hl kwb">$decimalplaces</span><span class="hl opt">);</span></li>
<li id="n_945" class="hl">      </li>
<li id="n_946" class="hl">            <span class="hl slc"># linetotal</span></li>
<li id="n_947" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$fxlinetotal </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></li>
<li id="n_948" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;sellprice_</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;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_949" class="hl"></li>
<li id="n_950" class="hl">            <span class="hl kwb">$amount </span><span class="hl opt">= </span><span class="hl kwb">$fxlinetotal </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_951" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$linetotal </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 num">2</span><span class="hl opt">);</span></li>
<li id="n_952" class="hl">            <span class="hl kwb">$fxdiff </span><span class="hl opt">+= </span><span class="hl kwb">$amount </span><span class="hl opt">- </span><span class="hl kwb">$linetotal</span><span class="hl opt">;</span></li>
<li id="n_953" class="hl">            <span class="hl kwb">&#64;taxaccounts </span><span class="hl opt">= </span>Tax<span class="hl opt">::</span>init_taxes<span class="hl opt">(</span></li>
<li id="n_954" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;taxaccounts_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span></li>
<li id="n_955" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;taxaccounts&quot;</span><span class="hl opt">});</span></li>
<li id="n_956" 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_957" class="hl">            <span class="hl kwb">$tax </span><span class="hl opt">= </span>Math<span class="hl opt">::</span>BigFloat-<span class="hl opt">&gt;</span><span class="hl kwd">bzero</span><span class="hl opt">();</span></li>
<li id="n_958" class="hl">            <span class="hl kwb">$fxtax </span><span class="hl opt">= </span>Math<span class="hl opt">::</span>BigFloat-<span class="hl opt">&gt;</span><span class="hl kwd">bzero</span><span class="hl opt">();</span></li>
<li id="n_959" class="hl"></li>
<li id="n_960" 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_961" 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_962" class="hl">                    Tax<span class="hl opt">::</span>calculate_taxes<span class="hl opt">(</span></li>
<li id="n_963" class="hl">                        \<span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">,</span></li>
<li id="n_964" class="hl">                        <span class="hl kwb">$linetotal</span><span class="hl opt">, </span><span class="hl num">1</span><span class="hl opt">);</span></li>
<li id="n_965" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;sellprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} -= </span><span class="hl kwb">$amount </span></li>
<li id="n_966" class="hl">                    <span class="hl opt">/ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_967" class="hl"></li>
<li id="n_968" class="hl">                <span class="hl kwb">$fxtax </span><span class="hl opt">+= </span>Tax<span class="hl opt">::</span>calculate_taxes<span class="hl opt">(</span></li>
<li id="n_969" class="hl">                    \<span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$linetotal</span><span class="hl opt">, </span><span class="hl num">1</span><span class="hl opt">);</span></li>
<li id="n_970" class="hl">            <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_971" class="hl">                <span class="hl kwb">$tax </span><span class="hl opt">+= </span><span class="hl kwb">$amount </span><span class="hl opt">= </span>Tax<span class="hl opt">::</span>calculate_taxes<span class="hl opt">(</span></li>
<li id="n_972" class="hl">                    \<span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$linetotal</span><span class="hl opt">, </span><span class="hl num">0</span><span class="hl opt">);</span></li>
<li id="n_973" class="hl">                <span class="hl kwb">$fxtax </span><span class="hl opt">+= </span>Tax<span class="hl opt">::</span>calculate_taxes<span class="hl opt">(</span></li>
<li id="n_974" class="hl">                    \<span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$linetotal</span><span class="hl opt">, </span><span class="hl num">0</span><span class="hl opt">);</span></li>
<li id="n_975" class="hl">            <span class="hl opt">}</span></li>
<li id="n_976" class="hl">            <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl kwb">&#64;taxaccounts</span><span class="hl opt">) {</span></li>
<li id="n_977" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<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">$_</span><span class="hl opt">-&gt;</span><span class="hl kwd">account</span><span class="hl opt">}{</span>amount<span class="hl opt">} += </span><span class="hl kwb">$_</span><span class="hl opt">-&gt;</span><span class="hl kwd">value</span><span class="hl opt">;</span></li>
<li id="n_978" class="hl">            <span class="hl opt">}</span></li>
<li id="n_979" class="hl"></li>
<li id="n_980" class="hl">            <span class="hl kwb">$grossamount </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">$linetotal</span><span class="hl opt">, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_981" class="hl">      </li>
<li id="n_982" 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_983" 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">$tax</span><span class="hl opt">, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_984" class="hl">                <span class="hl kwb">$linetotal </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></li>
<li id="n_985" class="hl">                    <span class="hl kwb">$tax </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_986" 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">$tax</span><span class="hl opt">);</span></li>
<li id="n_987" class="hl">            <span class="hl opt">}</span></li>
<li id="n_988" class="hl">      </li>
<li id="n_989" class="hl">            <span class="hl slc"># add linetotal to income</span></li>
<li id="n_990" 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">$linetotal</span><span class="hl opt">, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_991" class="hl"></li>
<li id="n_992" 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_993" class="hl">                chart_id <span class="hl opt">=&gt; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;income_accno_id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">},</span></li>
<li id="n_994" class="hl">                amount <span class="hl opt">=&gt; </span><span class="hl kwb">$amount</span><span class="hl opt">,</span></li>
<li id="n_995" class="hl">                fxgrossamount <span class="hl opt">=&gt; </span><span class="hl kwb">$fxlinetotal </span><span class="hl opt">+ </span><span class="hl kwb">$fxtax</span><span class="hl opt">,</span></li>
<li id="n_996" class="hl">                grossamount <span class="hl opt">=&gt; </span><span class="hl kwb">$grossamount</span><span class="hl opt">,</span></li>
<li id="n_997" 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_998" class="hl"></li>
<li id="n_999" class="hl">            <span class="hl kwb">$ndx </span><span class="hl opt">= </span><span class="hl kwb">$#</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_1000" class="hl"></li>
<li id="n_1001" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;sellprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} = </span></li>
<li id="n_1002" 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_1003" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;sellprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_1004" class="hl">                        <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_1005" class="hl">                    <span class="hl kwb">$decimalplaces</span><span class="hl opt">);</span></li>
<li id="n_1006" class="hl">  </li>
<li id="n_1007" 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;inventory_accno_id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} </span></li>
<li id="n_1008" class="hl">                        <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;assembly_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_1009" class="hl">    </li>
<li id="n_1010" 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;assembly_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_1011" class="hl">                    <span class="hl slc"># If the assembly consists of all </span></li>
<li id="n_1012" class="hl">                    <span class="hl slc"># services, we don&#39;t keep inventory,</span></li>
<li id="n_1013" class="hl">                    <span class="hl slc"># so we should not update it</span></li>
<li id="n_1014" class="hl">                    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1015" class="hl">                        SELECT sum<span class="hl opt">(</span></li>
<li id="n_1016" class="hl">                               p<span class="hl opt">.</span>inventory_accno_id<span class="hl opt">), </span></li>
<li id="n_1017" class="hl">                               p<span class="hl opt">.</span>assembly</li>
<li id="n_1018" class="hl">                          FROM parts p</li>
<li id="n_1019" class="hl">                          JOIN assembly a </li>
<li id="n_1020" class="hl">                               ON <span class="hl opt">(</span>a<span class="hl opt">.</span>parts_id <span class="hl opt">= </span>p<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1021" class="hl">                         WHERE a<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;id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}</span></li>
<li id="n_1022" class="hl">                         GROUP BY p<span class="hl opt">.</span>assembly<span class="hl opt">|;</span></li>
<li id="n_1023" 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_1024" 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;id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) </span></li>
<li id="n_1025" 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_1026" class="hl">                    <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$inv</span><span class="hl opt">, </span><span class="hl kwb">$assembly</span><span class="hl opt">) </span></li>
<li id="n_1027" class="hl">                        <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_1028" 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_1029" class="hl">              </li>
<li id="n_1030" class="hl">                    <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$inv </span><span class="hl opt">|| </span><span class="hl kwb">$assembly</span><span class="hl opt">) {</span></li>
<li id="n_1031" class="hl">                        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">update_balance</span><span class="hl opt">(</span><span class="hl kwb">$dbh</span><span class="hl opt">,</span></li>
<li id="n_1032" class="hl">                            <span class="hl sng">&quot;parts&quot;</span><span class="hl opt">,</span></li>
<li id="n_1033" class="hl">                            <span class="hl sng">&quot;onhand&quot;</span><span class="hl opt">,</span></li>
<li id="n_1034" class="hl">                            qq<span class="hl opt">|</span>id <span class="hl opt">= |.</span></li>
<li id="n_1035" class="hl">                            qq<span class="hl opt">|</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</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 sng">&quot;qty_</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_1037" class="hl">                                <span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>shipped<span class="hl opt">};</span></li>
<li id="n_1038" class="hl">                    <span class="hl opt">}</span></li>
<li id="n_1039" class="hl"></li>
<li id="n_1040" class="hl">                    <span class="hl opt">&amp;</span>process_assembly<span class="hl opt">(</span></li>
<li id="n_1041" class="hl">                        <span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span></li>
<li id="n_1042" class="hl">                        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl kwb">$project_id</span><span class="hl opt">);</span></li>
<li id="n_1043" class="hl">                <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_1044" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">update_balance</span><span class="hl opt">(</span></li>
<li id="n_1045" class="hl">                        <span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl sng">&quot;parts&quot;</span><span class="hl opt">, </span><span class="hl sng">&quot;onhand&quot;</span><span class="hl opt">,</span></li>
<li id="n_1046" class="hl">                        qq<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;id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}|,</span></li>
<li id="n_1047" class="hl">                        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</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_1048" class="hl">                            <span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>shipped<span class="hl opt">};</span></li>
<li id="n_1049" class="hl">                </li>
<li id="n_1050" class="hl">                    <span class="hl kwb">$allocated </span><span class="hl opt">= &amp;</span>cogs<span class="hl opt">(</span></li>
<li id="n_1051" class="hl">                        <span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span></li>
<li id="n_1052" class="hl">                        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl kwb">$project_id</span><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 opt">}</span></li>
<li id="n_1055" class="hl"></li>
<li id="n_1056" class="hl">            <span class="hl slc"># save detail record in invoice table</span></li>
<li id="n_1057" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1058" class="hl">                INSERT INTO invoice <span class="hl opt">(</span>description<span class="hl opt">)</span></li>
<li id="n_1059" 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_1060" class="hl"></li>
<li id="n_1061" 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_1062" class="hl"></li>
<li id="n_1063" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1064" class="hl">                SELECT id FROM invoice</li>
<li id="n_1065" class="hl">                WHERE description <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_1066" class="hl">            <span class="hl opt">(</span><span class="hl kwb">$invoice_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_1067" class="hl"></li>
<li id="n_1068" 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;deliverydate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}){</span></li>
<li id="n_1069" class="hl">                <span class="hl kwc">undef </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;deliverydate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};   </span></li>
<li id="n_1070" class="hl">            <span class="hl opt">}   </span></li>
<li id="n_1071" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1072" class="hl">                UPDATE invoice </li>
<li id="n_1073" class="hl">                   SET trans_id <span class="hl opt">= ?,</span></li>
<li id="n_1074" class="hl">                       parts_id <span class="hl opt">= ?,</span></li>
<li id="n_1075" class="hl">                       description <span class="hl opt">= ?,</span></li>
<li id="n_1076" class="hl">                       qty <span class="hl opt">= ?,</span></li>
<li id="n_1077" class="hl">                       sellprice <span class="hl opt">= ?,</span></li>
<li id="n_1078" class="hl">                       fxsellprice <span class="hl opt">= ?,</span></li>
<li id="n_1079" class="hl">                       discount <span class="hl opt">= ?,</span></li>
<li id="n_1080" class="hl">                       allocated <span class="hl opt">= ?,</span></li>
<li id="n_1081" class="hl">                       unit <span class="hl opt">= ?,</span></li>
<li id="n_1082" class="hl">                       deliverydate <span class="hl opt">= ?,</span></li>
<li id="n_1083" class="hl">                       project_id <span class="hl opt">= ?,</span></li>
<li id="n_1084" class="hl">                       serialnumber <span class="hl opt">= ?,</span></li>
<li id="n_1085" class="hl">                       notes <span class="hl opt">= ?</span></li>
<li id="n_1086" class="hl">                      WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_1087" class="hl"></li>
<li id="n_1088" 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_1089" 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></li>
<li id="n_1090" class="hl">                <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 sng">&quot;id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span></li>
<li id="n_1091" class="hl">                <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><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;qty_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">},</span></li>
<li id="n_1092" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;sellprice_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl kwb">$fxsellprice</span><span class="hl opt">, </span></li>
<li id="n_1093" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;discount_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl kwb">$allocated</span><span class="hl opt">, </span></li>
<li id="n_1094" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;unit_</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;deliverydate_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">},</span></li>
<li id="n_1095" class="hl">                <span class="hl kwb">$project_id</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;serialnumber_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span></li>
<li id="n_1096" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;notes_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}, </span><span class="hl kwb">$invoice_id</span><span class="hl opt">)</span></li>
<li id="n_1097" 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_1098" class="hl"></li>
<li id="n_1099" class="hl">            <span class="hl slc"># add invoice_id</span></li>
<li id="n_1100" class="hl">            <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">$ndx</span><span class="hl opt">]-&gt;{</span>invoice_id<span class="hl opt">} </span></li>
<li id="n_1101" class="hl">                <span class="hl opt">= </span><span class="hl kwb">$invoice_id</span><span class="hl opt">;</span></li>
<li id="n_1102" class="hl">      </li>
<li id="n_1103" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1104" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1105" class="hl"></li>
<li id="n_1106" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paid<span class="hl opt">} = </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1107" 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_1108" class="hl">        <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_1109" 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;paid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_1110" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paid<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_1111" 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_1112" 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;paid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_1113" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1114" class="hl">  </li>
<li id="n_1115" class="hl">    <span class="hl slc"># add lineitems + tax</span></li>
<li id="n_1116" class="hl">    <span class="hl kwb">$amount </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1117" class="hl">    <span class="hl kwb">$grossamount </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1118" class="hl">    <span class="hl kwb">$fxgrossamount </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1119" class="hl"></li>
<li id="n_1120" 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></li>
<li id="n_1121" class="hl">        <span class="hl kwb">$amount </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_1122" class="hl">        <span class="hl kwb">$grossamount </span><span class="hl opt">+= </span><span class="hl kwb">$_</span><span class="hl opt">-&gt;{</span>grossamount<span class="hl opt">};</span></li>
<li id="n_1123" class="hl">        <span class="hl kwb">$fxgrossamount </span><span class="hl opt">+= </span><span class="hl kwb">$_</span><span class="hl opt">-&gt;{</span>fxgrossamount<span class="hl opt">};</span></li>
<li id="n_1124" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1125" class="hl">    <span class="hl kwb">$invnetamount </span><span class="hl opt">= </span><span class="hl kwb">$amount</span><span class="hl opt">;</span></li>
<li id="n_1126" class="hl">  </li>
<li id="n_1127" class="hl">    <span class="hl kwb">$amount </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1128" class="hl">    <span class="hl kwa">for </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_1129" class="hl">        <span class="hl kwb">$amount </span><span class="hl opt">+= </span></li>
<li id="n_1130" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<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">$_</span><span class="hl opt">}{</span>amount<span class="hl opt">} = </span></li>
<li id="n_1131" 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_1132" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<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">$_</span><span class="hl opt">}{</span>amount<span class="hl opt">}, </span></li>
<li id="n_1133" class="hl">                    <span class="hl num">2</span><span class="hl opt">); </span></li>
<li id="n_1134" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1135" class="hl">    <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">$amount</span><span class="hl opt">;</span></li>
<li id="n_1136" class="hl"></li>
<li id="n_1137" 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_1138" class="hl"></li>
<li id="n_1139" 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_1140" class="hl">        <span class="hl kwb">$diff </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">$grossamount </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_1141" class="hl">        <span class="hl kwb">$invamount </span><span class="hl opt">+= </span><span class="hl kwb">$diff</span><span class="hl opt">;</span></li>
<li id="n_1142" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1143" class="hl">    <span class="hl kwb">$fxdiff </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">$fxdiff</span><span class="hl opt">,</span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_1144" class="hl">    <span class="hl kwb">$invnetamount </span><span class="hl opt">+= </span><span class="hl kwb">$fxdiff</span><span class="hl opt">;</span></li>
<li id="n_1145" class="hl">    <span class="hl kwb">$invamount </span><span class="hl opt">+= </span><span class="hl kwb">$fxdiff</span><span class="hl opt">;</span></li>
<li id="n_1146" class="hl"></li>
<li id="n_1147" 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 kwd">round_amount</span><span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paid<span class="hl opt">} - </span><span class="hl kwb">$fxgrossamount</span><span class="hl opt">,</span><span class="hl num">2</span><span class="hl opt">) == </span><span class="hl num">0</span><span class="hl opt">) {</span></li>
<li id="n_1148" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paid<span class="hl opt">} = </span><span class="hl kwb">$invamount</span><span class="hl opt">;</span></li>
<li id="n_1149" class="hl">    <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_1150" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paid<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></li>
<li id="n_1151" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paid<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_1152" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1153" class="hl"></li>
<li id="n_1154" class="hl">    <span class="hl kwa">foreach </span><span class="hl kwb">$ref </span><span class="hl opt">(</span><span class="hl kwc">sort </span><span class="hl opt">{ </span><span class="hl kwb">$b</span><span class="hl opt">-&gt;{</span>amount<span class="hl opt">} &lt;=&gt; </span><span class="hl kwb">$a</span><span class="hl opt">-&gt;{</span>amount<span class="hl opt">} } </span></li>
<li id="n_1155" class="hl">                    <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_1156" class="hl"></li>
<li id="n_1157" class="hl">        <span class="hl kwb">$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 kwb">$diff </span><span class="hl opt">+ </span><span class="hl kwb">$fxdiff</span><span class="hl opt">;</span></li>
<li id="n_1158" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1159" class="hl">            INSERT INTO acc_trans </li>
<li id="n_1160" 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_1161" class="hl">                        transdate<span class="hl opt">, </span>project_id<span class="hl opt">, </span>invoice_id<span class="hl opt">)</span></li>
<li id="n_1162" class="hl">                 VALUES <span class="hl opt">(?, ?, ?, ?, ?, ?)|;</span></li>
<li id="n_1163" 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_1164" 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></li>
<li id="n_1165" 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>chart_id<span class="hl opt">}, </span><span class="hl kwb">$amount</span><span class="hl opt">, </span></li>
<li id="n_1166" 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>project_id<span class="hl opt">}, </span></li>
<li id="n_1167" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>invoice_id<span class="hl opt">}) </span></li>
<li id="n_1168" 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_1169" 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_1170" class="hl">        <span class="hl kwb">$fxdiff </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1171" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1172" class="hl">  </li>
<li id="n_1173" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>receivables<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></li>
<li id="n_1174" class="hl"> </li>
<li id="n_1175" class="hl">    <span class="hl kwc">delete </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_1176" class="hl">  </li>
<li id="n_1177" class="hl">    <span class="hl slc"># update exchangerate</span></li>
<li id="n_1178" 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_1179" 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></li>
<li id="n_1180" class="hl">            <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_1181" 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><span class="hl opt">);</span></li>
<li id="n_1182" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1183" class="hl"></li>
<li id="n_1184" class="hl">    <span class="hl slc"># record receivable</span></li>
<li id="n_1185" 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>receivables<span class="hl opt">}) {</span></li>
<li id="n_1186" 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>AR<span class="hl opt">};</span></li>
<li id="n_1187" class="hl"></li>
<li id="n_1188" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1189" class="hl">            INSERT INTO acc_trans </li>
<li id="n_1190" 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_1191" class="hl">                 VALUES <span class="hl opt">(?, (</span>SELECT id FROM chart WHERE accno <span class="hl opt">= ?), </span></li>
<li id="n_1192" class="hl">                        <span class="hl opt">?, ?)|;</span></li>
<li id="n_1193" class="hl"></li>
<li id="n_1194" 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_1195" 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></li>
<li id="n_1196" 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><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>receivables<span class="hl opt">}, </span></li>
<li id="n_1197" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">})</span></li>
<li id="n_1198" 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_1199" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1200" class="hl"></li>
<li id="n_1201" class="hl">    <span class="hl kwa">foreach </span><span class="hl kwc">my </span><span class="hl kwb">$trans_id </span><span class="hl opt">(</span><span class="hl kwc">keys </span><span class="hl opt">%{</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">}}) {</span></li>
<li id="n_1202" class="hl">        <span class="hl kwa">foreach </span><span class="hl kwc">my </span><span class="hl kwb">$accno </span><span class="hl opt">(</span><span class="hl kwc">keys </span><span class="hl opt">%{</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">}{</span><span class="hl kwb">$trans_id</span><span class="hl opt">}}) {</span></li>
<li id="n_1203" 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></li>
<li id="n_1204" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>acc_trans<span class="hl opt">}{</span><span class="hl kwb">$trans_id</span><span class="hl opt">}{</span><span class="hl kwb">$accno</span><span class="hl opt">}{</span>amount<span class="hl opt">}, </span></li>
<li id="n_1205" class="hl">                <span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_1206" 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_1207" class="hl"></li>
<li id="n_1208" class="hl">                <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1209" class="hl">                    INSERT INTO acc_trans </li>
<li id="n_1210" 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_1211" class="hl">                                transdate<span class="hl opt">)</span></li>
<li id="n_1212" class="hl">                    VALUES <span class="hl opt">(?, (</span>SELECT id FROM chart</li>
<li id="n_1213" class="hl">                                 WHERE accno <span class="hl opt">= ?),</span></li>
<li id="n_1214" class="hl">                           <span class="hl opt">?, ?)|;</span></li>
<li id="n_1215" class="hl"></li>
<li id="n_1216" 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_1217" 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></li>
<li id="n_1218" class="hl">                    <span class="hl kwb">$trans_id</span><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></li>
<li id="n_1219" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">})</span></li>
<li id="n_1220" 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_1221" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1222" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1223" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1224" class="hl"></li>
<li id="n_1225" class="hl">  </li>
<li id="n_1226" class="hl">    <span class="hl slc"># if there is no amount but a payment record receivable</span></li>
<li id="n_1227" class="hl">    <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$invamount </span><span class="hl opt">== </span><span class="hl num">0</span><span class="hl opt">) {</span></li>
<li id="n_1228" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>receivables<span class="hl opt">} = </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_1229" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1230" class="hl">  </li>
<li id="n_1231" 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_1232" class="hl">  </li>
<li id="n_1233" class="hl">    <span class="hl slc"># record payments and offsetting AR</span></li>
<li id="n_1234" 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_1235" class="hl">    </li>
<li id="n_1236" 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;paid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}) {</span></li>
<li id="n_1237" 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 sng">&quot;AR_paid_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_1238" 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_1239" 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_1240" class="hl"></li>
<li id="n_1241" 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_1242" class="hl">      </li>
<li id="n_1243" 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_1244" class="hl">      </li>
<li id="n_1245" 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_1246" 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_1247" class="hl">            <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_1248" class="hl">                <span class="hl kwb">$exchangerate </span><span class="hl opt">= </span></li>
<li id="n_1249" 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></li>
<li id="n_1250" class="hl">                        <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_1251" 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 sng">&#39;buy&#39;</span><span class="hl opt">);</span></li>
<li id="n_1252" class="hl">    </li>
<li id="n_1253" 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_1254" class="hl">                    <span class="hl opt">(</span><span class="hl kwb">$exchangerate</span><span class="hl opt">) </span></li>
<li id="n_1255" class="hl">                    <span class="hl opt">? </span><span class="hl kwb">$exchangerate </span></li>
<li id="n_1256" 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></li>
<li id="n_1257" class="hl">                        <span class="hl kwb">$myconfig</span><span class="hl opt">, </span></li>
<li id="n_1258" 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_1259" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1260" class="hl">      </li>
<li id="n_1261" class="hl"> </li>
<li id="n_1262" class="hl">            <span class="hl slc"># record AR</span></li>
<li id="n_1263" 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></li>
<li id="n_1264" class="hl">                <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><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_1265" class="hl"></li>
<li id="n_1266" 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>receivables<span class="hl opt">}) {</span></li>
<li id="n_1267" class="hl">                <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1268" class="hl">                    INSERT INTO acc_trans </li>
<li id="n_1269" 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_1270" class="hl">                                transdate<span class="hl opt">)</span></li>
<li id="n_1271" class="hl">                         VALUES <span class="hl opt">(?, (</span>SELECT id FROM chart</li>
<li id="n_1272" class="hl">                                      WHERE accno <span class="hl opt">= ?),</span></li>
<li id="n_1273" class="hl">                                <span class="hl opt">?, ?)|;</span></li>
<li id="n_1274" 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_1275" 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></li>
<li id="n_1276" class="hl">                    <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>AR<span class="hl opt">}, </span><span class="hl kwb">$amount</span><span class="hl opt">, </span></li>
<li id="n_1277" 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_1278" 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_1279" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1280" class="hl"></li>
<li id="n_1281" class="hl">            <span class="hl slc"># record payment</span></li>
<li id="n_1282" 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 sng">&quot;paid_</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_1283" 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_1284" 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_1285" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1286" class="hl">      </li>
<li id="n_1287" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1288" class="hl">                INSERT INTO acc_trans </li>
<li id="n_1289" 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_1290" class="hl">                            transdate<span class="hl opt">, </span>source<span class="hl opt">, </span>memo<span class="hl opt">, </span>cleared<span class="hl opt">)</span></li>
<li id="n_1291" class="hl">                             VALUES <span class="hl opt">(?, (</span>SELECT id FROM chart</li>
<li id="n_1292" class="hl">                                           WHERE accno <span class="hl opt">= ?),</span></li>
<li id="n_1293" class="hl">                            <span class="hl opt">?, ?, ?, ?, ?)|;</span></li>
<li id="n_1294" class="hl"></li>
<li id="n_1295" 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_1296" 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></li>
<li id="n_1297" 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><span class="hl kwb">$amount</span><span class="hl opt">, </span></li>
<li id="n_1298" 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><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_1299" class="hl">                <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><span class="hl kwb">$cleared</span><span class="hl opt">) </span></li>
<li id="n_1300" 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_1301" class="hl"></li>
<li id="n_1302" class="hl">            <span class="hl slc"># exchangerate difference</span></li>
<li id="n_1303" 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></li>
<li id="n_1304" 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></li>
<li id="n_1305" class="hl">                    <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_1306" class="hl">                        <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_1307" class="hl">                        <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><span class="hl num">2</span><span class="hl opt">)) * -</span><span class="hl num">1</span><span class="hl opt">, </span></li>
<li id="n_1308" class="hl">                <span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_1309" class="hl"></li>
<li id="n_1310" 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_1311" class="hl">                <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1312" class="hl">                    INSERT INTO acc_trans </li>
<li id="n_1313" 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_1314" class="hl">                                transdate<span class="hl opt">, </span>source<span class="hl opt">, </span></li>
<li id="n_1315" class="hl">                                fx_transaction<span class="hl opt">, </span>cleared<span class="hl opt">)</span></li>
<li id="n_1316" class="hl">                         VALUES <span class="hl opt">(?, (</span>SELECT id FROM chart</li>
<li id="n_1317" class="hl">                                       WHERE accno <span class="hl opt">= &gt;),</span></li>
<li id="n_1318" class="hl">                                <span class="hl opt">?, ?, ?, </span><span class="hl sng">&#39;1&#39;</span><span class="hl opt">, ?)|;</span></li>
<li id="n_1319" class="hl"></li>
<li id="n_1320" 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_1321" 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></li>
<li id="n_1322" 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><span class="hl kwb">$amount</span><span class="hl opt">,</span></li>
<li id="n_1323" 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_1324" 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">$cleared </span><span class="hl opt">) </span></li>
<li id="n_1325" 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_1326" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1327" class="hl">     </li>
<li id="n_1328" class="hl">            <span class="hl slc"># gain/loss</span></li>
<li id="n_1329" 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></li>
<li id="n_1330" 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></li>
<li id="n_1331" class="hl">                    <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_1332" class="hl">                        <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_1333" 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></li>
<li id="n_1334" class="hl">                        <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_1335" class="hl">                        <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><span class="hl opt">)</span></li>
<li id="n_1336" class="hl">                <span class="hl opt">) * -</span><span class="hl num">1</span><span class="hl opt">, </span></li>
<li id="n_1337" class="hl">                <span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_1338" class="hl"></li>
<li id="n_1339" 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_1340" class="hl">                <span class="hl kwc">my </span><span class="hl kwb">$accno_id </span><span class="hl opt">= </span></li>
<li id="n_1341" class="hl">                    <span class="hl opt">(</span><span class="hl kwb">$amount </span><span class="hl opt">&gt; </span><span class="hl num">0</span><span class="hl opt">) </span></li>
<li id="n_1342" class="hl">                    <span class="hl opt">? </span><span class="hl kwb">$fxgain_accno_id </span></li>
<li id="n_1343" class="hl">                    <span class="hl opt">: </span><span class="hl kwb">$fxloss_accno_id</span><span class="hl opt">;</span></li>
<li id="n_1344" class="hl"></li>
<li id="n_1345" class="hl">                <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1346" class="hl">                    INSERT INTO acc_trans <span class="hl opt">(</span></li>
<li id="n_1347" class="hl">                                trans_id<span class="hl opt">, </span>chart_id<span class="hl opt">, </span>amount<span class="hl opt">,</span></li>
<li id="n_1348" class="hl">                                transdate<span class="hl opt">, </span>fx_transaction<span class="hl opt">, </span></li>
<li id="n_1349" class="hl">                                cleared<span class="hl opt">)</span></li>
<li id="n_1350" class="hl">                         VALUES <span class="hl opt">(?, ?, ?, ?, </span><span class="hl sng">&#39;1&#39;</span><span class="hl opt">, ?)|;</span></li>
<li id="n_1351" class="hl"></li>
<li id="n_1352" 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_1353" 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></li>
<li id="n_1354" 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><span class="hl kwb">$amount</span><span class="hl opt">,</span></li>
<li id="n_1355" 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><span class="hl opt">) </span></li>
<li id="n_1356" 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_1357" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1358" class="hl">    </li>
<li id="n_1359" class="hl">            <span class="hl slc"># update exchange rate</span></li>
<li id="n_1360" 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_1361" class="hl">                            <span class="hl opt">&amp;&amp; !</span><span class="hl kwb">$exchangerate</span><span class="hl opt">) {</span></li>
<li id="n_1362" class="hl"></li>
<li id="n_1363" 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></li>
<li id="n_1364" class="hl">                    <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_1365" 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_1366" 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">0</span><span class="hl opt">);</span></li>
<li id="n_1367" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1368" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1369" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1370" class="hl"></li>
<li id="n_1371" class="hl">    <span class="hl slc"># set values which could be empty to 0</span></li>
<li id="n_1372" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>terms<span class="hl opt">} *= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_1373" 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_1374" class="hl"></li>
<li id="n_1375" class="hl"></li>
<li id="n_1376" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invnumber<span class="hl opt">} = </span></li>
<li id="n_1377" class="hl">        <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 sng">&quot;sinumber&quot;</span><span class="hl opt">, </span><span class="hl kwb">$dbh</span><span class="hl opt">) </span></li>
<li id="n_1378" 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_1379" class="hl"></li>
<li id="n_1380" class="hl">    <span class="hl slc"># save AR record</span></li>
<li id="n_1381" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1382" class="hl">        UPDATE ar set</li>
<li id="n_1383" class="hl">               invnumber <span class="hl opt">= ?,</span></li>
<li id="n_1384" class="hl">               ordnumber <span class="hl opt">= ?,</span></li>
<li id="n_1385" class="hl">               quonumber <span class="hl opt">= ?,</span></li>
<li id="n_1386" class="hl">               transdate <span class="hl opt">= ?,</span></li>
<li id="n_1387" class="hl">               customer_id <span class="hl opt">= ?,</span></li>
<li id="n_1388" class="hl">               amount <span class="hl opt">= ?,</span></li>
<li id="n_1389" class="hl">               netamount <span class="hl opt">= ?,</span></li>
<li id="n_1390" class="hl">               paid <span class="hl opt">= ?,</span></li>
<li id="n_1391" class="hl">               datepaid <span class="hl opt">= ?,</span></li>
<li id="n_1392" class="hl">               duedate <span class="hl opt">= ?,</span></li>
<li id="n_1393" class="hl">               invoice <span class="hl opt">= </span><span class="hl sng">&#39;1&#39;</span><span class="hl opt">,</span></li>
<li id="n_1394" class="hl">               shippingpoint <span class="hl opt">= ?,</span></li>
<li id="n_1395" class="hl">               shipvia <span class="hl opt">= ?,</span></li>
<li id="n_1396" class="hl">               terms <span class="hl opt">= ?,</span></li>
<li id="n_1397" class="hl">               notes <span class="hl opt">= ?,</span></li>
<li id="n_1398" class="hl">               intnotes <span class="hl opt">= ?,</span></li>
<li id="n_1399" class="hl">               taxincluded <span class="hl opt">= ?,</span></li>
<li id="n_1400" class="hl">               curr <span class="hl opt">= ?,</span></li>
<li id="n_1401" class="hl">               department_id <span class="hl opt">= ?,</span></li>
<li id="n_1402" class="hl">               employee_id <span class="hl opt">= ?,</span></li>
<li id="n_1403" class="hl">               till <span class="hl opt">= ?,</span></li>
<li id="n_1404" class="hl">               language_code <span class="hl opt">= ?,</span></li>
<li id="n_1405" class="hl">               ponumber <span class="hl opt">= ?</span></li>
<li id="n_1406" class="hl">         WHERE id <span class="hl opt">= ?</span></li>
<li id="n_1407" class="hl">             <span class="hl opt">|;</span></li>
<li id="n_1408" class="hl"></li>
<li id="n_1409" 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_1410" 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></li>
<li id="n_1411" 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><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>quonumber<span class="hl opt">},</span></li>
<li id="n_1412" 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>customer_id<span class="hl opt">}, </span><span class="hl kwb">$invamount</span><span class="hl opt">,</span></li>
<li id="n_1413" class="hl">        <span class="hl kwb">$invnetamount</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>paid<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>datepaid<span class="hl opt">}, </span></li>
<li id="n_1414" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>duedate<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>shippingpoint<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>shipvia<span class="hl opt">},</span></li>
<li id="n_1415" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>terms<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>notes<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>intnotes<span class="hl opt">}, </span></li>
<li id="n_1416" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>taxincluded<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>department_id<span class="hl opt">},</span></li>
<li id="n_1417" class="hl">        <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>till<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>language_code<span class="hl opt">}, </span></li>
<li id="n_1418" 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_1419" 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_1420" class="hl"></li>
<li id="n_1421" class="hl">    <span class="hl slc"># add shipto</span></li>
<li id="n_1422" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>name<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>customer<span class="hl opt">};</span></li>
<li id="n_1423" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>name<span class="hl opt">} =~ </span><span class="hl kwd">s/--$form-&gt;{customer_id}//</span><span class="hl opt">;</span></li>
<li id="n_1424" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">add_shipto</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>id<span class="hl opt">});</span></li>
<li id="n_1425" class="hl"></li>
<li id="n_1426" class="hl">    <span class="hl slc"># save printed, emailed and queued</span></li>
<li id="n_1427" 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_1428" class="hl">  </li>
<li id="n_1429" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%audittrail </span><span class="hl opt">= ( </span></li>
<li id="n_1430" class="hl">        tablename  <span class="hl opt">=&gt; </span><span class="hl sng">&#39;ar&#39;</span><span class="hl opt">,</span></li>
<li id="n_1431" 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_1432" class="hl">        formname   <span class="hl opt">=&gt; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>type<span class="hl opt">},</span></li>
<li id="n_1433" 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_1434" 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_1435" class="hl"> </li>
<li id="n_1436" 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_1437" class="hl"></li>
<li id="n_1438" 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_1439" class="hl"></li>
<li id="n_1440" 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_1441" class="hl"></li>
<li id="n_1442" class="hl"></li>
<li id="n_1443" class="hl">    <span class="hl kwb">$rc</span><span class="hl opt">;</span></li>
<li id="n_1444" class="hl">  </li>
<li id="n_1445" class="hl"><span class="hl opt">}</span></li>
<li id="n_1446" class="hl"></li>
<li id="n_1447" class="hl"></li>
<li id="n_1448" class="hl"><span class="hl kwa">sub </span>process_assembly <span class="hl opt">{</span></li>
<li id="n_1449" class="hl">    <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$dbh2</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$id</span><span class="hl opt">, </span><span class="hl kwb">$totalqty</span><span class="hl opt">, </span><span class="hl kwb">$project_id</span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_1450" 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_1451" 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_1452" class="hl">        SELECT a<span class="hl opt">.</span>parts_id<span class="hl opt">, </span>a<span class="hl opt">.</span>qty<span class="hl opt">, </span>p<span class="hl opt">.</span>assembly<span class="hl opt">,</span></li>
<li id="n_1453" class="hl">               p<span class="hl opt">.</span>partnumber<span class="hl opt">, </span>p<span class="hl opt">.</span>description<span class="hl opt">, </span>p<span class="hl opt">.</span>unit<span class="hl opt">,</span></li>
<li id="n_1454" class="hl">               p<span class="hl opt">.</span>inventory_accno_id<span class="hl opt">, </span>p<span class="hl opt">.</span>income_accno_id<span class="hl opt">,</span></li>
<li id="n_1455" class="hl">               p<span class="hl opt">.</span>expense_accno_id</li>
<li id="n_1456" class="hl">          FROM assembly a</li>
<li id="n_1457" class="hl">          JOIN parts p ON <span class="hl opt">(</span>a<span class="hl opt">.</span>parts_id <span class="hl opt">= </span>p<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1458" class="hl">         WHERE a<span class="hl opt">.</span>id <span class="hl opt">= ?|;</span></li>
<li id="n_1459" 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_1460" 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">$id</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_1461" class="hl"></li>
<li id="n_1462" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$allocated</span><span class="hl opt">;</span></li>
<li id="n_1463" class="hl">  </li>
<li id="n_1464" 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_1465" class="hl"></li>
<li id="n_1466" class="hl">        <span class="hl kwb">$allocated </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1467" class="hl">    </li>
<li id="n_1468" class="hl">        <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>inventory_accno_id<span class="hl opt">} *= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_1469" class="hl">        <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>expense_accno_id<span class="hl opt">} *= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_1470" class="hl"></li>
<li id="n_1471" class="hl">        <span class="hl slc"># multiply by number of assemblies</span></li>
<li id="n_1472" class="hl">        <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>qty<span class="hl opt">} *= </span><span class="hl kwb">$totalqty</span><span class="hl opt">;</span></li>
<li id="n_1473" class="hl">    </li>
<li id="n_1474" 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>assembly<span class="hl opt">}) {</span></li>
<li id="n_1475" class="hl">            <span class="hl opt">&amp;</span>process_assembly<span class="hl opt">(</span></li>
<li id="n_1476" class="hl">                <span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>parts_id<span class="hl opt">}, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>qty<span class="hl opt">}, </span></li>
<li id="n_1477" class="hl">                <span class="hl kwb">$project_id</span><span class="hl opt">);</span></li>
<li id="n_1478" class="hl">            <span class="hl kwa">next</span><span class="hl opt">;</span></li>
<li id="n_1479" class="hl">        <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_1480" 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>inventory_accno_id<span class="hl opt">}) {</span></li>
<li id="n_1481" class="hl">            <span class="hl kwb">$allocated </span><span class="hl opt">= &amp;</span>cogs<span class="hl opt">(</span></li>
<li id="n_1482" class="hl">                <span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>parts_id<span class="hl opt">}, </span></li>
<li id="n_1483" class="hl">                <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>qty<span class="hl opt">}, </span><span class="hl kwb">$project_id</span><span class="hl opt">);</span></li>
<li id="n_1484" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1485" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1486" class="hl"></li>
<li id="n_1487" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1488" class="hl">            INSERT INTO invoice </li>
<li id="n_1489" class="hl">                        <span class="hl opt">(</span>trans_id<span class="hl opt">, </span>description<span class="hl opt">, </span>parts_id<span class="hl opt">, </span>qty<span class="hl opt">,</span></li>
<li id="n_1490" class="hl">                        sellprice<span class="hl opt">, </span>fxsellprice<span class="hl opt">, </span>allocated<span class="hl opt">, </span></li>
<li id="n_1491" class="hl">                        assemblyitem<span class="hl opt">, </span>unit<span class="hl opt">)</span></li>
<li id="n_1492" class="hl">                 VALUES <span class="hl opt">(?, ?, ?, ?, </span><span class="hl num">0</span><span class="hl opt">, </span><span class="hl num">0</span><span class="hl opt">, ?, </span><span class="hl sng">&#39;t&#39;</span><span class="hl opt">, ?)|;</span></li>
<li id="n_1493" class="hl"></li>
<li id="n_1494" 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_1495" 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></li>
<li id="n_1496" 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>description<span class="hl opt">}, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>parts_id<span class="hl opt">}, </span></li>
<li id="n_1497" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>qty<span class="hl opt">}, </span><span class="hl kwb">$allocated</span><span class="hl opt">, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>unit<span class="hl opt">})</span></li>
<li id="n_1498" 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_1499" class="hl">     </li>
<li id="n_1500" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1501" class="hl"></li>
<li id="n_1502" 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_1503" class="hl"></li>
<li id="n_1504" class="hl"><span class="hl opt">}</span></li>
<li id="n_1505" class="hl"></li>
<li id="n_1506" class="hl"></li>
<li id="n_1507" class="hl"><span class="hl kwa">sub </span>cogs <span class="hl opt">{</span></li>
<li id="n_1508" class="hl">    <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$dbh2</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$id</span><span class="hl opt">, </span><span class="hl kwb">$totalqty</span><span class="hl opt">, </span><span class="hl kwb">$project_id</span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_1509" 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_1510" 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_1511" class="hl">           SELECT i<span class="hl opt">.</span>id<span class="hl opt">, </span>i<span class="hl opt">.</span>trans_id<span class="hl opt">, </span>i<span class="hl opt">.</span>qty<span class="hl opt">, </span>i<span class="hl opt">.</span>allocated<span class="hl opt">, </span>i<span class="hl opt">.</span>sellprice<span class="hl opt">,</span></li>
<li id="n_1512" class="hl">                  i<span class="hl opt">.</span>fxsellprice<span class="hl opt">, </span>p<span class="hl opt">.</span>inventory_accno_id<span class="hl opt">, </span></li>
<li id="n_1513" class="hl">                  p<span class="hl opt">.</span>expense_accno_id</li>
<li id="n_1514" class="hl">             FROM invoice i<span class="hl opt">, </span>parts p</li>
<li id="n_1515" class="hl">            WHERE i<span class="hl opt">.</span>parts_id <span class="hl opt">= </span>p<span class="hl opt">.</span>id</li>
<li id="n_1516" class="hl">              AND i<span class="hl opt">.</span>parts_id <span class="hl opt">= ?</span></li>
<li id="n_1517" class="hl">              AND <span class="hl opt">(</span>i<span class="hl opt">.</span>qty <span class="hl opt">+ </span>i<span class="hl opt">.</span>allocated<span class="hl opt">) &lt; </span><span class="hl num">0</span></li>
<li id="n_1518" class="hl">         ORDER BY trans_id<span class="hl opt">|;</span></li>
<li id="n_1519" 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_1520" 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">$id</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_1521" class="hl"></li>
<li id="n_1522" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$allocated </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1523" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$qty</span><span class="hl opt">;</span></li>
<li id="n_1524" class="hl">  </li>
<li id="n_1525" 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_1526" class="hl">        <span class="hl kwa">if </span><span class="hl opt">((</span><span class="hl kwb">$qty </span><span class="hl opt">= ((</span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>qty<span class="hl opt">} * -</span><span class="hl num">1</span><span class="hl opt">) - </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>allocated<span class="hl opt">})) </span></li>
<li id="n_1527" class="hl">                                <span class="hl opt">&gt; </span><span class="hl kwb">$totalqty</span><span class="hl opt">) {</span></li>
<li id="n_1528" class="hl">            <span class="hl kwb">$qty </span><span class="hl opt">= </span><span class="hl kwb">$totalqty</span><span class="hl opt">;</span></li>
<li id="n_1529" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1530" class="hl">    </li>
<li id="n_1531" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">update_balance</span><span class="hl opt">(</span></li>
<li id="n_1532" class="hl">            <span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl sng">&quot;invoice&quot;</span><span class="hl opt">, </span><span class="hl sng">&quot;allocated&quot;</span><span class="hl opt">, </span>qq<span class="hl opt">|</span>id <span class="hl opt">= </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}|, </span></li>
<li id="n_1533" class="hl">            <span class="hl kwb">$qty</span><span class="hl opt">);</span></li>
<li id="n_1534" class="hl"></li>
<li id="n_1535" class="hl">        <span class="hl slc"># total expenses and inventory</span></li>
<li id="n_1536" class="hl">        <span class="hl slc"># sellprice is the cost of the item</span></li>
<li id="n_1537" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$linetotal </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></li>
<li id="n_1538" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>sellprice<span class="hl opt">} * </span><span class="hl kwb">$qty</span><span class="hl opt">, </span><span class="hl num">2</span><span class="hl opt">);</span></li>
<li id="n_1539" class="hl"></li>
<li id="n_1540" class="hl">        <span class="hl slc"># add expense</span></li>
<li id="n_1541" 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_1542" class="hl">            chart_id <span class="hl opt">=&gt; </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>expense_accno_id<span class="hl opt">},</span></li>
<li id="n_1543" class="hl">            amount <span class="hl opt">=&gt; </span><span class="hl kwb">$linetotal </span><span class="hl opt">* -</span><span class="hl num">1</span><span class="hl opt">,</span></li>
<li id="n_1544" 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_1545" class="hl">            invoice_id <span class="hl opt">=&gt; </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} };</span></li>
<li id="n_1546" class="hl"></li>
<li id="n_1547" class="hl">        <span class="hl slc"># deduct inventory</span></li>
<li id="n_1548" 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_1549" class="hl">            chart_id <span class="hl opt">=&gt; </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>inventory_accno_id<span class="hl opt">},</span></li>
<li id="n_1550" class="hl">            amount <span class="hl opt">=&gt; </span><span class="hl kwb">$linetotal</span><span class="hl opt">,</span></li>
<li id="n_1551" 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_1552" class="hl">            invoice_id <span class="hl opt">=&gt; </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} };</span></li>
<li id="n_1553" class="hl"></li>
<li id="n_1554" class="hl">        <span class="hl slc"># add allocated</span></li>
<li id="n_1555" class="hl">        <span class="hl kwb">$allocated </span><span class="hl opt">+= -</span><span class="hl kwb">$qty</span><span class="hl opt">;</span></li>
<li id="n_1556" class="hl">    </li>
<li id="n_1557" class="hl">        <span class="hl kwa">last if </span><span class="hl opt">((</span><span class="hl kwb">$totalqty </span><span class="hl opt">-= </span><span class="hl kwb">$qty</span><span class="hl opt">) &lt;= </span><span class="hl num">0</span><span class="hl opt">);</span></li>
<li id="n_1558" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1559" class="hl"></li>
<li id="n_1560" 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_1561" class="hl"></li>
<li id="n_1562" class="hl">    <span class="hl kwb">$allocated</span><span class="hl opt">;</span></li>
<li id="n_1563" 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_1564" class="hl"><span class="hl opt">}</span></li>
<li id="n_1565" class="hl"></li>
<li id="n_1566" class="hl"></li>
<li id="n_1567" class="hl"></li>
<li id="n_1568" class="hl"><span class="hl kwa">sub </span>reverse_invoice <span class="hl opt">{</span></li>
<li id="n_1569" class="hl">    <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$dbh2</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_1570" 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_1571" 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_1572" class="hl">        SELECT id FROM ar</li>
<li id="n_1573" class="hl">        WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_1574" class="hl"></li>
<li id="n_1575" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_1576" 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_1577" 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></li>
<li id="n_1578" class="hl">    <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$id</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_1579" class="hl"></li>
<li id="n_1580" class="hl">    <span class="hl kwa">return unless </span><span class="hl kwb">$id</span><span class="hl opt">;</span></li>
<li id="n_1581" class="hl"></li>
<li id="n_1582" class="hl">    <span class="hl slc"># reverse inventory items</span></li>
<li id="n_1583" 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_1584" class="hl">        SELECT i<span class="hl opt">.</span>id<span class="hl opt">, </span>i<span class="hl opt">.</span>parts_id<span class="hl opt">, </span>i<span class="hl opt">.</span>qty<span class="hl opt">, </span>i<span class="hl opt">.</span>assemblyitem<span class="hl opt">, </span>p<span class="hl opt">.</span>assembly<span class="hl opt">,</span></li>
<li id="n_1585" class="hl">               p<span class="hl opt">.</span>inventory_accno_id</li>
<li id="n_1586" class="hl">          FROM invoice i</li>
<li id="n_1587" class="hl">          JOIN parts p ON <span class="hl opt">(</span>i<span class="hl opt">.</span>parts_id <span class="hl opt">= </span>p<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1588" class="hl">         WHERE i<span class="hl opt">.</span>trans_id <span class="hl opt">= ?|;</span></li>
<li id="n_1589" 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_1590" 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_1591" class="hl"></li>
<li id="n_1592" 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_1593" class="hl"></li>
<li id="n_1594" 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>inventory_accno_id<span class="hl opt">} || </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>assembly<span class="hl opt">}) {</span></li>
<li id="n_1595" class="hl"></li>
<li id="n_1596" class="hl">            <span class="hl slc"># if the invoice item is not an assemblyitem </span></li>
<li id="n_1597" class="hl">            <span class="hl slc"># adjust parts onhand</span></li>
<li id="n_1598" 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>assemblyitem<span class="hl opt">}) {</span></li>
<li id="n_1599" class="hl">                <span class="hl slc"># adjust onhand in parts table</span></li>
<li id="n_1600" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">update_balance</span><span class="hl opt">(</span></li>
<li id="n_1601" class="hl">                    <span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl sng">&quot;parts&quot;</span><span class="hl opt">, </span><span class="hl sng">&quot;onhand&quot;</span><span class="hl opt">,</span></li>
<li id="n_1602" class="hl">                    qq<span class="hl opt">|</span>id <span class="hl opt">= </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>parts_id<span class="hl opt">}|, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>qty<span class="hl opt">});</span></li>
<li id="n_1603" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1604" class="hl"></li>
<li id="n_1605" class="hl">            <span class="hl slc"># loop if it is an assembly</span></li>
<li id="n_1606" class="hl">            <span class="hl kwa">next if </span><span class="hl opt">(</span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>assembly<span class="hl opt">});</span></li>
<li id="n_1607" class="hl">      </li>
<li id="n_1608" class="hl">            <span class="hl slc"># de-allocated purchases</span></li>
<li id="n_1609" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1610" class="hl">                  SELECT id<span class="hl opt">, </span>trans_id<span class="hl opt">, </span>allocated</li>
<li id="n_1611" class="hl">                    FROM invoice</li>
<li id="n_1612" class="hl">                   WHERE parts_id <span class="hl opt">= ?</span></li>
<li id="n_1613" class="hl">                         AND allocated <span class="hl opt">&gt; </span><span class="hl num">0</span></li>
<li id="n_1614" class="hl">                ORDER BY trans_id DESC<span class="hl opt">|;</span></li>
<li id="n_1615" 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_1616" 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">$ref</span><span class="hl opt">-&gt;{</span>parts_id<span class="hl opt">}) </span></li>
<li id="n_1617" 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_1618" class="hl"></li>
<li id="n_1619" class="hl">            <span class="hl kwa">while </span><span class="hl opt">(</span><span class="hl kwc">my </span><span class="hl kwb">$inhref </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_1620" class="hl">                <span class="hl kwb">$qty </span><span class="hl opt">= </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>qty<span class="hl opt">};</span></li>
<li id="n_1621" 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>qty<span class="hl opt">} - </span><span class="hl kwb">$inhref</span><span class="hl opt">-&gt;{</span>allocated<span class="hl opt">}) &gt; </span><span class="hl num">0</span><span class="hl opt">) {</span></li>
<li id="n_1622" class="hl">                    <span class="hl kwb">$qty </span><span class="hl opt">= </span><span class="hl kwb">$inhref</span><span class="hl opt">-&gt;{</span>allocated<span class="hl opt">};</span></li>
<li id="n_1623" class="hl">                <span class="hl opt">}</span></li>
<li id="n_1624" class="hl">    </li>
<li id="n_1625" class="hl">                <span class="hl slc"># update invoice</span></li>
<li id="n_1626" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">update_balance</span><span class="hl opt">(</span></li>
<li id="n_1627" class="hl">                    <span class="hl kwb">$dbh</span><span class="hl opt">, </span><span class="hl sng">&quot;invoice&quot;</span><span class="hl opt">, </span><span class="hl sng">&quot;allocated&quot;</span><span class="hl opt">,</span></li>
<li id="n_1628" class="hl">                    qq<span class="hl opt">|</span>id <span class="hl opt">= </span><span class="hl kwb">$inhref</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}|, </span><span class="hl kwb">$qty </span><span class="hl opt">* -</span><span class="hl num">1</span><span class="hl opt">);</span></li>
<li id="n_1629" class="hl"></li>
<li id="n_1630" class="hl">                <span class="hl kwa">last if </span><span class="hl opt">((</span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>qty<span class="hl opt">} -= </span><span class="hl kwb">$qty</span><span class="hl opt">) &lt;= </span><span class="hl num">0</span><span class="hl opt">);</span></li>
<li id="n_1631" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1632" 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_1633" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1634" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1635" class="hl">  </li>
<li id="n_1636" 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_1637" class="hl">  </li>
<li id="n_1638" class="hl">    <span class="hl slc"># delete acc_trans</span></li>
<li id="n_1639" 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_1640" class="hl"></li>
<li id="n_1641" 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_1642" 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_1643" class="hl"> </li>
<li id="n_1644" class="hl">    <span class="hl slc"># delete invoice entries</span></li>
<li id="n_1645" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>DELETE FROM invoice WHERE trans_id <span class="hl opt">= ?|;</span></li>
<li id="n_1646" 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_1647" 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_1648" class="hl"></li>
<li id="n_1649" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>DELETE FROM shipto WHERE trans_id <span class="hl opt">= ?|;</span></li>
<li id="n_1650" 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_1651" 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_1652" class="hl"></li>
<li id="n_1653" 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_1654" class="hl"></li>
<li id="n_1655" class="hl"><span class="hl opt">}</span></li>
<li id="n_1656" class="hl"></li>
<li id="n_1657" class="hl"></li>
<li id="n_1658" class="hl"></li>
<li id="n_1659" class="hl"><span class="hl kwa">sub </span>delete_invoice <span class="hl opt">{</span></li>
<li id="n_1660" 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_1661" class="hl"></li>
<li id="n_1662" 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_1663" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_1664" class="hl"></li>
<li id="n_1665" class="hl">    <span class="hl opt">&amp;</span>reverse_invoice<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">);</span></li>
<li id="n_1666" class="hl">  </li>
<li id="n_1667" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%audittrail </span><span class="hl opt">= ( </span></li>
<li id="n_1668" class="hl">        tablename  <span class="hl opt">=&gt; </span><span class="hl sng">&#39;ar&#39;</span><span class="hl opt">,</span></li>
<li id="n_1669" 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_1670" class="hl">        formname   <span class="hl opt">=&gt; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>type<span class="hl opt">},</span></li>
<li id="n_1671" 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_1672" 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_1673" class="hl"> </li>
<li id="n_1674" 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_1675" class="hl">     </li>
<li id="n_1676" class="hl">    <span class="hl slc"># delete AR record</span></li>
<li id="n_1677" 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 ar WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_1678" 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_1679" 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_1680" class="hl"></li>
<li id="n_1681" class="hl">    <span class="hl slc"># delete spool files</span></li>
<li id="n_1682" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1683" class="hl">        SELECT spoolfile FROM status</li>
<li id="n_1684" class="hl">         WHERE trans_id <span class="hl opt">= ? </span>AND spoolfile IS NOT NULL<span class="hl opt">|;</span></li>
<li id="n_1685" 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_1686" 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_1687" class="hl"></li>
<li id="n_1688" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$spoolfile</span><span class="hl opt">;</span></li>
<li id="n_1689" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;spoolfiles </span><span class="hl opt">= ();</span></li>
<li id="n_1690" class="hl">  </li>
<li id="n_1691" 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_1692" 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_1693" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1694" 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_1695" class="hl"></li>
<li id="n_1696" class="hl">    <span class="hl slc"># delete status entries</span></li>
<li id="n_1697" 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_1698" 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_1699" 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_1700" class="hl"></li>
<li id="n_1701" 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_1702" class="hl"></li>
<li id="n_1703" 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_1704" 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_1705" 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> </li>
<li id="n_1706" class="hl">            <span class="hl kwa">if </span><span class="hl kwb">$spoolfile</span><span class="hl opt">;</span></li>
<li id="n_1707" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1708" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1709" class="hl">  </li>
<li id="n_1710" 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_1711" class="hl">  </li>
<li id="n_1712" class="hl">    <span class="hl kwb">$rc</span><span class="hl opt">;</span></li>
<li id="n_1713" class="hl">  </li>
<li id="n_1714" class="hl"><span class="hl opt">}</span></li>
<li id="n_1715" class="hl"></li>
<li id="n_1716" class="hl"></li>
<li id="n_1717" class="hl"></li>
<li id="n_1718" class="hl"><span class="hl kwa">sub </span>retrieve_invoice <span class="hl opt">{</span></li>
<li id="n_1719" 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_1720" class="hl">  </li>
<li id="n_1721" 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_1722" class="hl"></li>
<li id="n_1723" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$query</span><span class="hl opt">;</span></li>
<li id="n_1724" class="hl"></li>
<li id="n_1725" 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_1726" class="hl">        <span class="hl slc"># get default accounts and last invoice number</span></li>
<li id="n_1727" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1728" class="hl">            SELECT value AS currencies FROM defaults</li>
<li id="n_1729" class="hl">             WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;curr&#39;</span><span class="hl opt">|;</span></li>
<li id="n_1730" class="hl">    <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_1731" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1732" class="hl">            SELECT value AS currencies<span class="hl opt">, </span>current_date AS transdate</li>
<li id="n_1733" class="hl">              FROM defaults</li>
<li id="n_1734" class="hl">             WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;curr&#39;</span><span class="hl opt">|;</span></li>
<li id="n_1735" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1736" 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_1737" 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_1738" class="hl"></li>
<li id="n_1739" class="hl">    <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_1740" 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_1741" 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_1742" class="hl"></li>
<li id="n_1743" class="hl">  </li>
<li id="n_1744" 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_1745" class="hl">    </li>
<li id="n_1746" class="hl">        <span class="hl slc"># retrieve invoice</span></li>
<li id="n_1747" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1748" class="hl">               SELECT 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>quonumber<span class="hl opt">,</span></li>
<li id="n_1749" class="hl">                      a<span class="hl opt">.</span>transdate<span class="hl opt">, </span>a<span class="hl opt">.</span>paid<span class="hl opt">,</span></li>
<li id="n_1750" class="hl">                      a<span class="hl opt">.</span>shippingpoint<span class="hl opt">, </span>a<span class="hl opt">.</span>shipvia<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_1751" class="hl">                      a<span class="hl opt">.</span>intnotes<span class="hl opt">,</span></li>
<li id="n_1752" class="hl">                      a<span class="hl opt">.</span>duedate<span class="hl opt">, </span>a<span class="hl opt">.</span>taxincluded<span class="hl opt">, </span>a<span class="hl opt">.</span>curr AS currency<span class="hl opt">,</span></li>
<li id="n_1753" class="hl">                      a<span class="hl opt">.</span>employee_id<span class="hl opt">, </span>e<span class="hl opt">.</span>name AS employee<span class="hl opt">, </span>a<span class="hl opt">.</span>till<span class="hl opt">, </span></li>
<li id="n_1754" class="hl">                      a<span class="hl opt">.</span>customer_id<span class="hl opt">,</span></li>
<li id="n_1755" class="hl">                      a<span class="hl opt">.</span>language_code<span class="hl opt">, </span>a<span class="hl opt">.</span>ponumber</li>
<li id="n_1756" class="hl">                 FROM ar a</li>
<li id="n_1757" class="hl">            LEFT JOIN employee e ON <span class="hl opt">(</span>e<span class="hl opt">.</span>id <span class="hl opt">= </span>a<span class="hl opt">.</span>employee_id<span class="hl opt">)</span></li>
<li id="n_1758" class="hl">                WHERE a<span class="hl opt">.</span>id <span class="hl opt">= ?|;</span></li>
<li id="n_1759" class="hl"></li>
<li id="n_1760" 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_1761" 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_1762" class="hl"></li>
<li id="n_1763" 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_1764" 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_1765" 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_1766" class="hl"></li>
<li id="n_1767" class="hl">        <span class="hl slc"># get shipto</span></li>
<li id="n_1768" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>SELECT <span class="hl opt">* </span>FROM shipto WHERE trans_id <span class="hl opt">= ?|;</span></li>
<li id="n_1769" 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_1770" 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_1771" class="hl"></li>
<li id="n_1772" 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_1773" 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_1774" 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_1775" class="hl"></li>
<li id="n_1776" class="hl">        <span class="hl slc"># retrieve individual items</span></li>
<li id="n_1777" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1778" class="hl">               SELECT i<span class="hl opt">.</span>description<span class="hl opt">, </span>i<span class="hl opt">.</span>qty<span class="hl opt">, </span>i<span class="hl opt">.</span>fxsellprice<span class="hl opt">, </span></li>
<li id="n_1779" class="hl">                      i<span class="hl opt">.</span>sellprice<span class="hl opt">, </span>i<span class="hl opt">.</span>discount<span class="hl opt">, </span>i<span class="hl opt">.</span>parts_id AS id<span class="hl opt">, </span></li>
<li id="n_1780" class="hl">                      i<span class="hl opt">.</span>unit<span class="hl opt">, </span>i<span class="hl opt">.</span>deliverydate<span class="hl opt">, </span>i<span class="hl opt">.</span>project_id<span class="hl opt">, </span></li>
<li id="n_1781" class="hl">                      pr<span class="hl opt">.</span>projectnumber<span class="hl opt">, </span>i<span class="hl opt">.</span>serialnumber<span class="hl opt">, </span>i<span class="hl opt">.</span>notes<span class="hl opt">,</span></li>
<li id="n_1782" class="hl">                      p<span class="hl opt">.</span>partnumber<span class="hl opt">, </span>p<span class="hl opt">.</span>assembly<span class="hl opt">, </span>p<span class="hl opt">.</span>bin<span class="hl opt">,</span></li>
<li id="n_1783" class="hl">                      pg<span class="hl opt">.</span>partsgroup<span class="hl opt">, </span>p<span class="hl opt">.</span>partsgroup_id<span class="hl opt">, </span></li>
<li id="n_1784" class="hl">                      p<span class="hl opt">.</span>partnumber AS sku<span class="hl opt">, </span>p<span class="hl opt">.</span>listprice<span class="hl opt">, </span>p<span class="hl opt">.</span>lastcost<span class="hl opt">,</span></li>
<li id="n_1785" class="hl">                      p<span class="hl opt">.</span>weight<span class="hl opt">, </span>p<span class="hl opt">.</span>onhand<span class="hl opt">, </span>p<span class="hl opt">.</span>inventory_accno_id<span class="hl opt">, </span></li>
<li id="n_1786" class="hl">                      p<span class="hl opt">.</span>income_accno_id<span class="hl opt">, </span>p<span class="hl opt">.</span>expense_accno_id<span class="hl opt">,</span></li>
<li id="n_1787" class="hl">                      t<span class="hl opt">.</span>description AS partsgrouptranslation</li>
<li id="n_1788" class="hl">                 FROM invoice i</li>
<li id="n_1789" class="hl">                     JOIN parts p ON <span class="hl opt">(</span>i<span class="hl opt">.</span>parts_id <span class="hl opt">= </span>p<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1790" class="hl">            LEFT JOIN project pr ON <span class="hl opt">(</span>i<span class="hl opt">.</span>project_id <span class="hl opt">= </span>pr<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1791" class="hl">            LEFT JOIN partsgroup pg ON <span class="hl opt">(</span>p<span class="hl opt">.</span>partsgroup_id <span class="hl opt">= </span>pg<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1792" class="hl">            LEFT JOIN translation t </li>
<li id="n_1793" class="hl">                      ON <span class="hl opt">(</span>t<span class="hl opt">.</span>trans_id <span class="hl opt">= </span>p<span class="hl opt">.</span>partsgroup_id </li>
<li id="n_1794" class="hl">                      AND t<span class="hl opt">.</span>language_code </li>
<li id="n_1795" class="hl">                      <span class="hl opt">= ?)</span></li>
<li id="n_1796" class="hl">                WHERE i<span class="hl opt">.</span>trans_id <span class="hl opt">= ?</span></li>
<li id="n_1797" class="hl">                      AND NOT i<span class="hl opt">.</span>assemblyitem <span class="hl opt">= </span><span class="hl sng">&#39;1&#39;</span></li>
<li id="n_1798" class="hl">             ORDER BY i<span class="hl opt">.</span>id<span class="hl opt">|;</span></li>
<li id="n_1799" 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_1800" 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>language_code<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_1801" 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_1802" class="hl"></li>
<li id="n_1803" class="hl">        <span class="hl slc"># foreign currency</span></li>
<li id="n_1804" class="hl">        <span class="hl opt">&amp;</span>exchangerate_defaults<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">);</span></li>
<li id="n_1805" class="hl"></li>
<li id="n_1806" class="hl">        <span class="hl slc"># query for price matrix</span></li>
<li id="n_1807" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$pmh </span><span class="hl opt">= </span>PriceMatrix<span class="hl opt">::</span>price_matrix_query<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">);</span></li>
<li id="n_1808" class="hl">    </li>
<li id="n_1809" class="hl">        <span class="hl slc"># taxes</span></li>
<li id="n_1810" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1811" class="hl">            SELECT c<span class="hl opt">.</span>accno</li>
<li id="n_1812" class="hl">              FROM chart c</li>
<li id="n_1813" class="hl">              JOIN partstax pt ON <span class="hl opt">(</span>pt<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_1814" class="hl">             WHERE pt<span class="hl opt">.</span>parts_id <span class="hl opt">= ?|;</span></li>
<li id="n_1815" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$tth </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><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_1816" class="hl">   </li>
<li id="n_1817" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$taxrate</span><span class="hl opt">;</span></li>
<li id="n_1818" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$ptref</span><span class="hl opt">;</span></li>
<li id="n_1819" class="hl">    </li>
<li id="n_1820" 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_1821" class="hl"></li>
<li id="n_1822" class="hl">            <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$dec</span><span class="hl opt">) = (</span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>fxsellprice<span class="hl opt">} =~ </span><span class="hl kwd">/\.(\d+)/</span><span class="hl opt">);</span></li>
<li id="n_1823" class="hl">            <span class="hl kwb">$dec </span><span class="hl opt">= </span><span class="hl kwc">length </span><span class="hl kwb">$dec</span><span class="hl opt">;</span></li>
<li id="n_1824" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">$decimalplaces </span><span class="hl opt">= (</span><span class="hl kwb">$dec </span><span class="hl opt">&gt; </span><span class="hl num">2</span><span class="hl opt">) ? </span><span class="hl kwb">$dec </span><span class="hl opt">: </span><span class="hl num">2</span><span class="hl opt">;</span></li>
<li id="n_1825" class="hl"></li>
<li id="n_1826" class="hl">            <span class="hl kwb">$tth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">});</span></li>
<li id="n_1827" class="hl"></li>
<li id="n_1828" class="hl">            <span class="hl kwb">$ref</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_1829" class="hl">            <span class="hl kwb">$taxrate </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1830" class="hl">      </li>
<li id="n_1831" class="hl">            <span class="hl kwa">while </span><span class="hl opt">(</span><span class="hl kwb">$ptref </span><span class="hl opt">= </span><span class="hl kwb">$tth</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_1832" class="hl">                <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>taxaccounts<span class="hl opt">} .= </span><span class="hl sng">&quot;</span><span class="hl ipl">$ptref</span><span class="hl sng">-&gt;{accno} &quot;</span><span class="hl opt">;</span></li>
<li id="n_1833" class="hl">                <span class="hl kwb">$taxrate </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">$ptref</span><span class="hl sng">-&gt;{accno}_rate&quot;</span><span class="hl opt">};</span></li>
<li id="n_1834" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1835" class="hl">            <span class="hl kwb">$tth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_1836" class="hl">            <span class="hl kwc">chop </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>taxaccounts<span class="hl opt">};</span></li>
<li id="n_1837" class="hl"></li>
<li id="n_1838" class="hl">            <span class="hl slc"># price matrix</span></li>
<li id="n_1839" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>sellprice<span class="hl opt">} = </span></li>
<li id="n_1840" class="hl">                <span class="hl opt">(</span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>fxsellprice<span class="hl opt">} </span></li>
<li id="n_1841" class="hl">                    <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>currency<span class="hl opt">}});</span></li>
<li id="n_1842" class="hl">            PriceMatrix<span class="hl opt">::</span>price_matrix<span class="hl opt">(</span></li>
<li id="n_1843" class="hl">                <span class="hl kwb">$pmh</span><span class="hl opt">, </span><span class="hl kwb">$ref</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 kwb">$decimalplaces</span><span class="hl opt">, </span></li>
<li id="n_1844" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">, </span><span class="hl kwb">$myconfig</span><span class="hl opt">);</span></li>
<li id="n_1845" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>sellprice<span class="hl opt">} = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>fxsellprice<span class="hl opt">};</span></li>
<li id="n_1846" class="hl"></li>
<li id="n_1847" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>partsgroup<span class="hl opt">} = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>partsgrouptranslation<span class="hl opt">} </span></li>
<li id="n_1848" class="hl">                <span class="hl kwa">if </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>partsgrouptranslation<span class="hl opt">};</span></li>
<li id="n_1849" class="hl">      </li>
<li id="n_1850" 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>invoice_details<span class="hl opt">} }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_1851" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1852" 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_1853" class="hl"></li>
<li id="n_1854" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1855" class="hl"></li>
<li id="n_1856" class="hl">  </li>
<li id="n_1857" 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 sng">&#39;ar&#39;</span><span class="hl opt">, </span><span class="hl sng">&#39;SELECT&#39;</span><span class="hl opt">);</span></li>
<li id="n_1858" 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_1859" class="hl">    <span class="hl kwb">$rc</span><span class="hl opt">;</span></li>
<li id="n_1860" class="hl"></li>
<li id="n_1861" class="hl"><span class="hl opt">}</span></li>
<li id="n_1862" class="hl"></li>
<li id="n_1863" class="hl"></li>
<li id="n_1864" class="hl"><span class="hl kwa">sub </span>retrieve_item <span class="hl opt">{</span></li>
<li id="n_1865" 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_1866" class="hl">  </li>
<li id="n_1867" 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_1868" class="hl"></li>
<li id="n_1869" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$i </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_1870" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$null</span><span class="hl opt">;</span></li>
<li id="n_1871" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$var</span><span class="hl opt">;</span></li>
<li id="n_1872" class="hl"></li>
<li id="n_1873" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$where </span><span class="hl opt">= </span><span class="hl sng">&quot;WHERE p.obsolete = &#39;0&#39; AND NOT p.income_accno_id IS NULL&quot;</span><span class="hl opt">;</span></li>
<li id="n_1874" class="hl"></li>
<li id="n_1875" 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;partnumber_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><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_1876" 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 sng">&quot;partnumber_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}));</span></li>
<li id="n_1877" class="hl">        <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND lower(p.partnumber) LIKE </span><span class="hl ipl">$var</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_1878" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1879" 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;description_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><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_1880" 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 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_1881" class="hl"></li>
<li id="n_1882" 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>language_code<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_1883" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND lower(t1.description) LIKE </span><span class="hl ipl">$var</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_1884" class="hl">        <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_1885" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; AND lower(p.description) LIKE </span><span class="hl ipl">$var</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_1886" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1887" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1888" class="hl"></li>
<li id="n_1889" 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;partsgroup_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><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_1890" 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 sng">&quot;partsgroup_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_1891" 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_1892" class="hl">        <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$var </span><span class="hl opt">== </span><span class="hl num">0</span><span class="hl opt">) {</span></li>
<li id="n_1893" class="hl">            <span class="hl slc"># search by partsgroup, this is for the POS</span></li>
<li id="n_1894" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span>qq<span class="hl opt">| </span>AND pg<span class="hl opt">.</span>partsgroup <span class="hl opt">= |.</span></li>
<li id="n_1895" class="hl">                <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 sng">&quot;partsgroup_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">});</span></li>
<li id="n_1896" class="hl">        <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_1897" class="hl">            <span class="hl kwb">$where </span><span class="hl opt">.= </span>qq<span class="hl opt">| </span>AND p<span class="hl opt">.</span>partsgroup_id <span class="hl opt">= </span><span class="hl kwb">$var</span><span class="hl opt">|;</span></li>
<li id="n_1898" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1899" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1900" class="hl"></li>
<li id="n_1901" 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;description_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><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_1902" class="hl">        <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; ORDER BY 3&quot;</span><span class="hl opt">;</span></li>
<li id="n_1903" class="hl">    <span class="hl opt">} </span><span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_1904" class="hl">        <span class="hl kwb">$where </span><span class="hl opt">.= </span><span class="hl sng">&quot; ORDER BY 2&quot;</span><span class="hl opt">;</span></li>
<li id="n_1905" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1906" class="hl">  </li>
<li id="n_1907" 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_1908" class="hl">           SELECT p<span class="hl opt">.</span>id<span class="hl opt">, </span>p<span class="hl opt">.</span>partnumber<span class="hl opt">, </span>p<span class="hl opt">.</span>description<span class="hl opt">, </span>p<span class="hl opt">.</span>sellprice<span class="hl opt">,</span></li>
<li id="n_1909" class="hl">              p<span class="hl opt">.</span>listprice<span class="hl opt">, </span>p<span class="hl opt">.</span>lastcost<span class="hl opt">, </span>p<span class="hl opt">.</span>unit<span class="hl opt">, </span>p<span class="hl opt">.</span>assembly<span class="hl opt">, </span>p<span class="hl opt">.</span>bin<span class="hl opt">, </span></li>
<li id="n_1910" class="hl">                  p<span class="hl opt">.</span>onhand<span class="hl opt">, </span>p<span class="hl opt">.</span>notes<span class="hl opt">, </span>p<span class="hl opt">.</span>inventory_accno_id<span class="hl opt">, </span></li>
<li id="n_1911" class="hl">                  p<span class="hl opt">.</span>income_accno_id<span class="hl opt">, </span>p<span class="hl opt">.</span>expense_accno_id<span class="hl opt">, </span>pg<span class="hl opt">.</span>partsgroup<span class="hl opt">, </span></li>
<li id="n_1912" class="hl">                  p<span class="hl opt">.</span>partsgroup_id<span class="hl opt">, </span>p<span class="hl opt">.</span>partnumber AS sku<span class="hl opt">, </span>p<span class="hl opt">.</span>weight<span class="hl opt">,</span></li>
<li id="n_1913" class="hl">                  t1<span class="hl opt">.</span>description AS translation<span class="hl opt">, </span></li>
<li id="n_1914" class="hl">                  t2<span class="hl opt">.</span>description AS grouptranslation</li>
<li id="n_1915" class="hl">                     FROM parts p</li>
<li id="n_1916" class="hl">        LEFT JOIN partsgroup pg ON <span class="hl opt">(</span>pg<span class="hl opt">.</span>id <span class="hl opt">= </span>p<span class="hl opt">.</span>partsgroup_id<span class="hl opt">)</span></li>
<li id="n_1917" class="hl">        LEFT JOIN translation t1 </li>
<li id="n_1918" class="hl">                  ON <span class="hl opt">(</span>t1<span class="hl opt">.</span>trans_id <span class="hl opt">= </span>p<span class="hl opt">.</span>id AND t1<span class="hl opt">.</span>language_code <span class="hl opt">= ?)</span></li>
<li id="n_1919" class="hl">        LEFT JOIN translation t2 </li>
<li id="n_1920" class="hl">                  ON <span class="hl opt">(</span>t2<span class="hl opt">.</span>trans_id <span class="hl opt">= </span>p<span class="hl opt">.</span>partsgroup_id </li>
<li id="n_1921" class="hl">                  AND t2<span class="hl opt">.</span>language_code <span class="hl opt">= ?)</span></li>
<li id="n_1922" class="hl">             <span class="hl kwb">$where</span><span class="hl opt">|;</span></li>
<li id="n_1923" 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_1924" 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>language_code<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>language_code<span class="hl opt">}) </span></li>
<li id="n_1925" 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_1926" class="hl"></li>
<li id="n_1927" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_1928" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ptref</span><span class="hl opt">;</span></li>
<li id="n_1929" class="hl"></li>
<li id="n_1930" class="hl">    <span class="hl slc"># setup exchange rates</span></li>
<li id="n_1931" class="hl">    <span class="hl opt">&amp;</span>exchangerate_defaults<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">);</span></li>
<li id="n_1932" class="hl">  </li>
<li id="n_1933" class="hl">    <span class="hl slc"># taxes</span></li>
<li id="n_1934" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1935" class="hl">        SELECT c<span class="hl opt">.</span>accno</li>
<li id="n_1936" class="hl">          FROM chart c</li>
<li id="n_1937" class="hl">          JOIN partstax pt ON <span class="hl opt">(</span>c<span class="hl opt">.</span>id <span class="hl opt">= </span>pt<span class="hl opt">.</span>chart_id<span class="hl opt">)</span></li>
<li id="n_1938" class="hl">         WHERE pt<span class="hl opt">.</span>parts_id <span class="hl opt">= ?|;</span></li>
<li id="n_1939" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$tth </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><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_1940" class="hl"></li>
<li id="n_1941" class="hl"></li>
<li id="n_1942" class="hl">    <span class="hl slc"># price matrix</span></li>
<li id="n_1943" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$pmh </span><span class="hl opt">= </span>PriceMatrix<span class="hl opt">::</span>price_matrix_query<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">);</span></li>
<li id="n_1944" class="hl"></li>
<li id="n_1945" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$transdate </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">datetonum</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>transdate<span class="hl opt">});</span></li>
<li id="n_1946" class="hl">  </li>
<li id="n_1947" 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_1948" class="hl"></li>
<li id="n_1949" class="hl">        <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$dec</span><span class="hl opt">) = (</span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>sellprice<span class="hl opt">} =~ </span><span class="hl kwd">/\.(\d+)/</span><span class="hl opt">);</span></li>
<li id="n_1950" class="hl">        <span class="hl kwb">$dec </span><span class="hl opt">= </span><span class="hl kwc">length </span><span class="hl kwb">$dec</span><span class="hl opt">;</span></li>
<li id="n_1951" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$decimalplaces </span><span class="hl opt">= (</span><span class="hl kwb">$dec </span><span class="hl opt">&gt; </span><span class="hl num">2</span><span class="hl opt">) ? </span><span class="hl kwb">$dec </span><span class="hl opt">: </span><span class="hl num">2</span><span class="hl opt">;</span></li>
<li id="n_1952" class="hl"></li>
<li id="n_1953" class="hl">        <span class="hl slc"># get taxes for part</span></li>
<li id="n_1954" class="hl">        <span class="hl kwb">$tth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">});</span></li>
<li id="n_1955" class="hl"></li>
<li id="n_1956" class="hl">        <span class="hl kwb">$ref</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_1957" class="hl"></li>
<li id="n_1958" class="hl">        <span class="hl kwa">while </span><span class="hl opt">(</span><span class="hl kwb">$ptref </span><span class="hl opt">= </span><span class="hl kwb">$tth</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_1959" class="hl">            <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>taxaccounts<span class="hl opt">} .= </span><span class="hl sng">&quot;</span><span class="hl ipl">$ptref</span><span class="hl sng">-&gt;{accno} &quot;</span><span class="hl opt">;</span></li>
<li id="n_1960" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1961" class="hl">        <span class="hl kwb">$tth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_1962" class="hl">        <span class="hl kwc">chop </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>taxaccounts<span class="hl opt">};</span></li>
<li id="n_1963" class="hl"></li>
<li id="n_1964" class="hl">        <span class="hl slc"># get matrix</span></li>
<li id="n_1965" class="hl">        PriceMatrix<span class="hl opt">::</span>price_matrix<span class="hl opt">(</span></li>
<li id="n_1966" class="hl">            <span class="hl kwb">$pmh</span><span class="hl opt">, </span><span class="hl kwb">$ref</span><span class="hl opt">, </span><span class="hl kwb">$transdate</span><span class="hl opt">, </span><span class="hl kwb">$decimalplaces</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">, </span></li>
<li id="n_1967" class="hl">            <span class="hl kwb">$myconfig</span><span class="hl opt">);</span></li>
<li id="n_1968" class="hl"></li>
<li id="n_1969" 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>translation<span class="hl opt">} </span></li>
<li id="n_1970" class="hl">            <span class="hl kwa">if </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>translation<span class="hl opt">};</span></li>
<li id="n_1971" class="hl"></li>
<li id="n_1972" class="hl">        <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>partsgroup<span class="hl opt">} = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>grouptranslation<span class="hl opt">} </span></li>
<li id="n_1973" class="hl">            <span class="hl kwa">if </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>grouptranslation<span class="hl opt">};</span></li>
<li id="n_1974" class="hl">    </li>
<li id="n_1975" 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>item_list<span class="hl opt">} }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_1976" class="hl"></li>
<li id="n_1977" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1978" class="hl">  </li>
<li id="n_1979" 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_1980" 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_1981" class="hl">  </li>
<li id="n_1982" class="hl"><span class="hl opt">}</span></li>
<li id="n_1983" class="hl"></li>
<li id="n_1984" class="hl"></li>
<li id="n_1985" class="hl"><span class="hl kwa">sub </span>exchangerate_defaults <span class="hl opt">{</span></li>
<li id="n_1986" class="hl">    <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$dbh2</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_1987" class="hl">    <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_1988" class="hl"></li>
<li id="n_1989" class="hl"></li>
<li id="n_1990" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$var</span><span class="hl opt">;</span></li>
<li id="n_1991" class="hl">  </li>
<li id="n_1992" class="hl">    <span class="hl slc"># get default currencies</span></li>
<li id="n_1993" 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_1994" class="hl">        SELECT <span class="hl kwc">substr</span><span class="hl opt">(</span>value<span class="hl opt">,</span><span class="hl num">1</span><span class="hl opt">,</span><span class="hl num">3</span><span class="hl opt">), </span>value FROM defaults</li>
<li id="n_1995" class="hl">         WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;curr&#39;</span><span class="hl opt">|;</span></li>
<li id="n_1996" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$eth </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><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_1997" class="hl">    <span class="hl kwb">$eth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">;</span></li>
<li id="n_1998" 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><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currencies<span class="hl opt">}) = </span><span class="hl kwb">$eth</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_array</span><span class="hl opt">;</span></li>
<li id="n_1999" class="hl">    <span class="hl kwb">$eth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_2000" class="hl"></li>
<li id="n_2001" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_2002" class="hl">        SELECT buy</li>
<li id="n_2003" class="hl">          FROM exchangerate</li>
<li id="n_2004" class="hl">         WHERE curr <span class="hl opt">= ?</span></li>
<li id="n_2005" class="hl">               AND transdate <span class="hl opt">= ?|;</span></li>
<li id="n_2006" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$eth1 </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><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_2007" class="hl"></li>
<li id="n_2008" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">/</span></li>
<li id="n_2009" class="hl">        SELECT max<span class="hl opt">(</span>transdate <span class="hl opt">|| </span><span class="hl sng">&#39; &#39;</span> <span class="hl opt">|| </span>buy <span class="hl opt">|| </span><span class="hl sng">&#39; &#39;</span> <span class="hl opt">|| </span>curr<span class="hl opt">)</span></li>
<li id="n_2010" class="hl">          FROM exchangerate</li>
<li id="n_2011" class="hl">         WHERE curr <span class="hl opt">= ?/;</span></li>
<li id="n_2012" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$eth2 </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><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_2013" class="hl"></li>
<li id="n_2014" class="hl">    <span class="hl slc"># get exchange rates for transdate or max</span></li>
<li id="n_2015" class="hl">    <span class="hl kwa">foreach </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 kwc">substr</span><span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currencies<span class="hl opt">},</span><span class="hl num">4</span><span class="hl opt">)) {</span></li>
<li id="n_2016" class="hl">        <span class="hl kwb">$eth1</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">$var</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_2017" class="hl">        <span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$var</span><span class="hl opt">}) = </span><span class="hl kwb">$eth1</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_array</span><span class="hl opt">;</span></li>
<li id="n_2018" class="hl"></li>
<li id="n_2019" 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">$var</span><span class="hl opt">} ) {</span></li>
<li id="n_2020" class="hl">            <span class="hl kwb">$eth2</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">$var</span><span class="hl opt">);</span></li>
<li id="n_2021" class="hl">      </li>
<li id="n_2022" class="hl">            <span class="hl opt">(</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$var</span><span class="hl opt">}) = </span><span class="hl kwb">$eth2</span><span class="hl opt">-&gt;</span><span class="hl kwd">fetchrow_array</span><span class="hl opt">;</span></li>
<li id="n_2023" 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><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">$var</span><span class="hl opt">};</span></li>
<li id="n_2024" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$var</span><span class="hl opt">} = </span><span class="hl num">1 </span><span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$var</span><span class="hl opt">};</span></li>
<li id="n_2025" class="hl">            <span class="hl kwb">$eth2</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_2026" class="hl">        <span class="hl opt">}</span></li>
<li id="n_2027" class="hl">        <span class="hl kwb">$eth1</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_2028" class="hl">    <span class="hl opt">}</span></li>
<li id="n_2029" class="hl"></li>
<li id="n_2030" 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>currency<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_2031" class="hl">        <span class="hl kwa">if </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">};</span></li>
<li id="n_2032" 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>currency<span class="hl opt">}} ||= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_2033" 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>defaultcurrency<span class="hl opt">}} = </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_2034" class="hl"></li>
<li id="n_2035" class="hl"><span class="hl opt">}</span></li>
<li id="n_2036" class="hl"></li>
<li id="n_2037" class="hl"></li>
<li id="n_2038" class="hl"><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_2039" class="hl"></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-06-26 22:03:11 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
