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/ledger-smb/atom/LedgerSMB/AM.pm?h=1.2.17+jones' type='application/atom+xml'/>
<link rel='vcs-git' href='https://source.jones.dk/ledger-smb' title='ledger-smb Git repository'/>
<link rel='vcs-git' href='user@source.jones.dk:ledger-smb' title='ledger-smb Git repository'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/'><img src='/cgit-css/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/'>index</a> : <a href='/ledger-smb/'>ledger-smb</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='bd57057f2d8b64ded0969ec9029c84b15e997c53'/><select name='h' onchange='this.form.submit();'>
<option value='1.2.13+jones'>1.2.13+jones</option>
<option value='1.2.16+jones'>1.2.16+jones</option>
<option value='1.2.17+jones' selected='selected'>1.2.17+jones</option>
<option value='master'>master</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Unnamed repository; edit this file to name it for gitweb.</td><td class='sub right'>Jonas Smedegaard</td></tr></table>
<table class='tabs'><tr><td>
<a href='/ledger-smb/?h=1.2.17%2bjones'>summary</a><a href='/ledger-smb/refs/?h=1.2.17%2bjones&amp;id=bd57057f2d8b64ded0969ec9029c84b15e997c53'>refs</a><a href='/ledger-smb/log/LedgerSMB/AM.pm?h=1.2.17%2bjones'>log</a><a class='active' href='/ledger-smb/tree/LedgerSMB/AM.pm?h=1.2.17%2bjones&amp;id=bd57057f2d8b64ded0969ec9029c84b15e997c53'>tree</a><a href='/ledger-smb/commit/LedgerSMB/AM.pm?h=1.2.17%2bjones&amp;id=bd57057f2d8b64ded0969ec9029c84b15e997c53'>commit</a><a href='/ledger-smb/diff/LedgerSMB/AM.pm?h=1.2.17%2bjones&amp;id=bd57057f2d8b64ded0969ec9029c84b15e997c53'>diff</a></td><td class='form'><form class='right' method='get' action='/ledger-smb/log/LedgerSMB/AM.pm'>
<input type='hidden' name='h' value='1.2.17+jones'/><input type='hidden' name='id' value='bd57057f2d8b64ded0969ec9029c84b15e997c53'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/ledger-smb/tree/?h=1.2.17%2bjones&amp;id=bd57057f2d8b64ded0969ec9029c84b15e997c53'>root</a>/<a href='/ledger-smb/tree/LedgerSMB?h=1.2.17%2bjones&amp;id=bd57057f2d8b64ded0969ec9029c84b15e997c53'>LedgerSMB</a>/<a href='/ledger-smb/tree/LedgerSMB/AM.pm?h=1.2.17%2bjones&amp;id=bd57057f2d8b64ded0969ec9029c84b15e997c53'>AM.pm</a></div><div class='content'>blob: 751b015fd2a5223aeef38fd9359c7803d01e8633 (<a href='/ledger-smb/plain/LedgerSMB/AM.pm?h=1.2.17%2bjones&amp;id=bd57057f2d8b64ded0969ec9029c84b15e997c53'>plain</a>)
<table summary='blob content' class='blob'>
<tr>
<td class='lines'><pre><code><ol class="hl">
<li id="n_1" class="hl"><span class="hl slc">#=====================================================================</span></li>
<li id="n_2" class="hl"><span class="hl slc">#&nbsp;LedgerSMB</span></li>
<li id="n_3" class="hl"><span class="hl slc"># Small Medium Business Accounting software</span></li>
<li id="n_4" class="hl"><span class="hl slc"># http://www.ledgersmb.org/</span></li>
<li id="n_5" class="hl"><span class="hl slc">#</span></li>
<li id="n_6" class="hl"><span class="hl slc"># Copyright (C) 2006</span></li>
<li id="n_7" class="hl"><span class="hl slc"># This work contains copyrighted information from a number of sources all used</span></li>
<li id="n_8" class="hl"><span class="hl slc"># with permission.</span></li>
<li id="n_9" class="hl"><span class="hl slc">#</span></li>
<li id="n_10" class="hl"><span class="hl slc"># This file contains source code included with or based on SQL-Ledger which</span></li>
<li id="n_11" class="hl"><span class="hl slc"># is Copyright Dieter Simader and DWS Systems 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"># Administration module</span></li>
<li id="n_31" class="hl"><span class="hl slc">#    Chart of Accounts</span></li>
<li id="n_32" class="hl"><span class="hl slc">#    template routines</span></li>
<li id="n_33" class="hl"><span class="hl slc">#    preferences</span></li>
<li id="n_34" class="hl"><span class="hl slc">#</span></li>
<li id="n_35" class="hl"><span class="hl slc">#======================================================================</span></li>
<li id="n_36" class="hl"></li>
<li id="n_37" class="hl"><span class="hl kwa">package </span>AM<span class="hl opt">;</span></li>
<li id="n_38" class="hl"><span class="hl kwa">use </span>LedgerSMB<span class="hl opt">::</span>Tax<span class="hl opt">;</span></li>
<li id="n_39" class="hl"><span class="hl kwa">use </span>LedgerSMB<span class="hl opt">::</span>Sysconfig<span class="hl opt">;</span></li>
<li id="n_40" class="hl"></li>
<li id="n_41" class="hl"><span class="hl kwa">sub </span>get_account <span class="hl opt">{</span></li>
<li id="n_42" class="hl"></li>
<li id="n_43" 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_44" class="hl"></li>
<li id="n_45" 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_46" class="hl"></li>
<li id="n_47" 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_48" class="hl">        SELECT accno<span class="hl opt">, </span>description<span class="hl opt">, </span>charttype<span class="hl opt">, </span>gifi_accno<span class="hl opt">,</span></li>
<li id="n_49" class="hl">               category<span class="hl opt">, </span><span class="hl kwc">link</span><span class="hl opt">, </span>contra</li>
<li id="n_50" class="hl">          FROM chart</li>
<li id="n_51" class="hl">         WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_52" class="hl"></li>
<li id="n_53" 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_54" 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_55" class="hl"></li>
<li id="n_56" 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_57" 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_58" 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_59" class="hl"></li>
<li id="n_60" class="hl">    <span class="hl slc"># get default accounts</span></li>
<li id="n_61" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_62" class="hl">        SELECT <span class="hl opt">(</span>SELECT value FROM defaults</li>
<li id="n_63" class="hl">                 WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;inventory_accno_id&#39;</span><span class="hl opt">)</span></li>
<li id="n_64" class="hl">               AS inventory_accno_id<span class="hl opt">,</span></li>
<li id="n_65" class="hl">               <span class="hl opt">(</span>SELECT value FROM defaults</li>
<li id="n_66" class="hl">                 WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;income_accno_id&#39;</span><span class="hl opt">)</span></li>
<li id="n_67" class="hl">               AS income_accno_id<span class="hl opt">, </span></li>
<li id="n_68" class="hl">               <span class="hl opt">(</span>SELECT value FROM defaults</li>
<li id="n_69" class="hl">                 WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;expense_accno_id&#39;</span><span class="hl opt">)</span></li>
<li id="n_70" class="hl">               AS expense_accno_id<span class="hl opt">,</span></li>
<li id="n_71" class="hl">               <span class="hl opt">(</span>SELECT value FROM defaults</li>
<li id="n_72" 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_73" class="hl">               AS fxgain_accno_id<span class="hl opt">, </span></li>
<li id="n_74" class="hl">               <span class="hl opt">(</span>SELECT value FROM defaults</li>
<li id="n_75" 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_76" class="hl">               AS fxloss_accno_id<span class="hl opt">|;</span></li>
<li id="n_77" class="hl"></li>
<li id="n_78" 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_79" 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_80" class="hl"></li>
<li id="n_81" 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_82" 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_83" 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_84" class="hl"></li>
<li id="n_85" class="hl">    <span class="hl slc"># check if we have any transactions</span></li>
<li id="n_86" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_87" class="hl">        SELECT trans_id </li>
<li id="n_88" class="hl">          FROM acc_trans</li>
<li id="n_89" class="hl">         WHERE chart_id <span class="hl opt">= ? </span></li>
<li id="n_90" class="hl">         LIMIT <span class="hl num">1</span><span class="hl opt">|;</span></li>
<li id="n_91" 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_92" 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_93" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<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_94" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<span class="hl opt">} = !</span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<span class="hl opt">};</span></li>
<li id="n_95" class="hl"></li>
<li id="n_96" 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_97" class="hl"><span class="hl opt">}</span></li>
<li id="n_98" class="hl"></li>
<li id="n_99" class="hl"><span class="hl kwa">sub </span>save_account <span class="hl opt">{</span></li>
<li id="n_100" class="hl"></li>
<li id="n_101" 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_102" class="hl"></li>
<li id="n_103" class="hl">    <span class="hl slc"># connect to database, turn off AutoCommit</span></li>
<li id="n_104" 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_105" class="hl"></li>
<li id="n_106" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">link</span><span class="hl opt">} = </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_107" 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></li>
<li id="n_108" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>AR<span class="hl opt">},        </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>AR_amount<span class="hl opt">},  </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>AR_tax<span class="hl opt">},</span></li>
<li id="n_109" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>AR_paid<span class="hl opt">},   </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>AP<span class="hl opt">},         </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>AP_amount<span class="hl opt">},</span></li>
<li id="n_110" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>AP_tax<span class="hl opt">},    </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>AP_paid<span class="hl opt">},    </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>IC<span class="hl opt">},</span></li>
<li id="n_111" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>IC_income<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>IC_sale<span class="hl opt">},    </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>IC_expense<span class="hl opt">},</span></li>
<li id="n_112" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>IC_cogs<span class="hl opt">},   </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>IC_taxpart<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>IC_taxservice<span class="hl opt">}</span></li>
<li id="n_113" class="hl">      <span class="hl opt">)</span></li>
<li id="n_114" class="hl">    <span class="hl opt">{</span></li>
<li id="n_115" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">link</span><span class="hl opt">} .= </span><span class="hl sng">&quot;${item}:&quot;</span> <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$item</span><span class="hl opt">);</span></li>
<li id="n_116" class="hl">    <span class="hl opt">}</span></li>
<li id="n_117" class="hl"></li>
<li id="n_118" class="hl">    <span class="hl kwc">chop </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">link</span><span class="hl opt">};</span></li>
<li id="n_119" class="hl"></li>
<li id="n_120" class="hl">    <span class="hl slc"># strip blanks from accno</span></li>
<li id="n_121" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(accno gifi_accno)</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 kwd">s/( |&#39;)//g </span><span class="hl opt">}</span></li>
<li id="n_122" class="hl"></li>
<li id="n_123" 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 sng">qw(accno gifi_accno description)</span><span class="hl opt">) {</span></li>
<li id="n_124" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$item</span><span class="hl opt">} =~ </span><span class="hl kwd">s/-(-+)/-/g</span><span class="hl opt">;</span></li>
<li id="n_125" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$item</span><span class="hl opt">} =~ </span><span class="hl kwd">s/ ( )+/ /g</span><span class="hl opt">;</span></li>
<li id="n_126" class="hl">    <span class="hl opt">}</span></li>
<li id="n_127" class="hl"></li>
<li id="n_128" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$query</span><span class="hl opt">;</span></li>
<li id="n_129" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_130" class="hl"></li>
<li id="n_131" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>contra<span class="hl opt">} *= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_132" class="hl"></li>
<li id="n_133" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">;</span></li>
<li id="n_134" class="hl">    <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= (</span></li>
<li id="n_135" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">},      </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>charttype<span class="hl opt">},</span></li>
<li id="n_136" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>gifi_accno<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>category<span class="hl opt">},    </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;link&quot;</span><span class="hl opt">},</span></li>
<li id="n_137" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>contra<span class="hl opt">}</span></li>
<li id="n_138" class="hl">    <span class="hl opt">);</span></li>
<li id="n_139" class="hl"></li>
<li id="n_140" class="hl">    <span class="hl slc"># if we have an id then replace the old record</span></li>
<li id="n_141" 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_142" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_143" class="hl">            UPDATE chart SET accno <span class="hl opt">= ?,</span></li>
<li id="n_144" class="hl">                   description <span class="hl opt">= ?,</span></li>
<li id="n_145" class="hl">                   charttype <span class="hl opt">= ?,</span></li>
<li id="n_146" class="hl">                   gifi_accno <span class="hl opt">= ?,</span></li>
<li id="n_147" class="hl">                   category <span class="hl opt">= ?,</span></li>
<li id="n_148" class="hl">                   <span class="hl kwc">link </span><span class="hl opt">= ?,</span></li>
<li id="n_149" class="hl">                   contra <span class="hl opt">= ?</span></li>
<li id="n_150" class="hl">             WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_151" class="hl">        <span class="hl kwc">push </span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">};</span></li>
<li id="n_152" class="hl">    <span class="hl opt">}</span></li>
<li id="n_153" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_154" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_155" class="hl">            INSERT INTO chart </li>
<li id="n_156" class="hl">                                    <span class="hl opt">(</span>accno<span class="hl opt">, </span>description<span class="hl opt">, </span>charttype<span class="hl opt">, </span></li>
<li id="n_157" class="hl">                        gifi_accno<span class="hl opt">, </span>category<span class="hl opt">, </span><span class="hl kwc">link</span><span class="hl opt">, </span>contra<span class="hl opt">)</span></li>
<li id="n_158" class="hl">                 VALUES <span class="hl opt">(?, ?, ?, ?, ?, ?, ?)|;</span></li>
<li id="n_159" class="hl">    <span class="hl opt">}</span></li>
<li id="n_160" class="hl"></li>
<li id="n_161" 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_162" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_163" 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_164" class="hl"></li>
<li id="n_165" class="hl">    <span class="hl kwb">$chart_id </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} );</span></li>
<li id="n_166" class="hl"></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>id<span class="hl opt">} ) {</span></li>
<li id="n_168" class="hl"></li>
<li id="n_169" class="hl">        <span class="hl slc"># get id from chart</span></li>
<li id="n_170" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_171" class="hl">            SELECT id</li>
<li id="n_172" class="hl">            FROM   chart</li>
<li id="n_173" class="hl">            WHERE  accno <span class="hl opt">= ?|;</span></li>
<li id="n_174" class="hl"></li>
<li id="n_175" 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_176" 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>accno<span class="hl opt">} );</span></li>
<li id="n_177" class="hl">        <span class="hl opt">(</span><span class="hl kwb">$chart_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_178" 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_179" class="hl">    <span class="hl opt">}</span></li>
<li id="n_180" class="hl"></li>
<li id="n_181" 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>IC_taxpart<span class="hl opt">}</span></li>
<li id="n_182" class="hl">        <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>IC_taxservice<span class="hl opt">}</span></li>
<li id="n_183" class="hl">        <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>AR_tax<span class="hl opt">}</span></li>
<li id="n_184" class="hl">        <span class="hl opt">|| </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>AP_tax<span class="hl opt">} )</span></li>
<li id="n_185" class="hl">    <span class="hl opt">{</span></li>
<li id="n_186" class="hl"></li>
<li id="n_187" class="hl">        <span class="hl slc"># add account if it doesn&#39;t exist in tax</span></li>
<li id="n_188" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>SELECT chart_id</li>
<li id="n_189" class="hl">                      FROM tax</li>
<li id="n_190" class="hl">                     WHERE chart_id <span class="hl opt">= </span><span class="hl kwb">$chart_id</span><span class="hl opt">|;</span></li>
<li id="n_191" class="hl"></li>
<li id="n_192" class="hl">        <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$tax_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_193" class="hl"></li>
<li id="n_194" class="hl">        <span class="hl slc"># add tax if it doesn&#39;t exist</span></li>
<li id="n_195" class="hl">        <span class="hl kwa">unless </span><span class="hl opt">(</span><span class="hl kwb">$tax_id</span><span class="hl opt">) {</span></li>
<li id="n_196" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>INSERT INTO tax <span class="hl opt">(</span>chart_id<span class="hl opt">, </span>rate<span class="hl opt">)</span></li>
<li id="n_197" class="hl">                             VALUES <span class="hl opt">(</span><span class="hl kwb">$chart_id</span><span class="hl opt">, </span><span class="hl num">0</span><span class="hl opt">)|;</span></li>
<li id="n_198" class="hl"></li>
<li id="n_199" 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_200" class="hl">        <span class="hl opt">}</span></li>
<li id="n_201" class="hl"></li>
<li id="n_202" class="hl">    <span class="hl opt">}</span></li>
<li id="n_203" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_204" class="hl"></li>
<li id="n_205" class="hl">        <span class="hl slc"># remove tax</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>id<span class="hl opt">} ) {</span></li>
<li id="n_207" class="hl">            <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>DELETE FROM tax</li>
<li id="n_208" class="hl">                              WHERE chart_id <span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}|;</span></li>
<li id="n_209" class="hl"></li>
<li id="n_210" 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_211" class="hl">        <span class="hl opt">}</span></li>
<li id="n_212" class="hl">    <span class="hl opt">}</span></li>
<li id="n_213" class="hl"></li>
<li id="n_214" class="hl">    <span class="hl slc"># commit</span></li>
<li id="n_215" 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_216" class="hl"></li>
<li id="n_217" class="hl">    <span class="hl kwb">$rc</span><span class="hl opt">;</span></li>
<li id="n_218" class="hl"><span class="hl opt">}</span></li>
<li id="n_219" class="hl"></li>
<li id="n_220" class="hl"><span class="hl kwa">sub </span>delete_account <span class="hl opt">{</span></li>
<li id="n_221" class="hl"></li>
<li id="n_222" 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_223" class="hl"></li>
<li id="n_224" class="hl">    <span class="hl slc"># connect to database, turn off AutoCommit</span></li>
<li id="n_225" 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_226" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_227" 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_228" class="hl">        SELECT count<span class="hl opt">(*)</span></li>
<li id="n_229" class="hl">          FROM acc_trans</li>
<li id="n_230" class="hl">         WHERE chart_id <span class="hl opt">= ?|;</span></li>
<li id="n_231" 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_232" 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_233" class="hl">    <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$rowcount</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_234" class="hl"></li>
<li id="n_235" class="hl">    <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$rowcount</span><span class="hl opt">) {</span></li>
<li id="n_236" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">error</span><span class="hl opt">( </span><span class="hl sng">&quot;Cannot delete accounts with associated transactions!&quot;</span> <span class="hl opt">);</span></li>
<li id="n_237" class="hl">    <span class="hl opt">}</span></li>
<li id="n_238" class="hl"></li>
<li id="n_239" class="hl">    <span class="hl slc"># delete chart of account record</span></li>
<li id="n_240" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_241" class="hl">        DELETE FROM chart</li>
<li id="n_242" class="hl">              WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_243" class="hl"></li>
<li id="n_244" 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_245" 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_246" class="hl"></li>
<li id="n_247" class="hl">    <span class="hl slc"># set inventory_accno_id, income_accno_id, expense_accno_id to defaults</span></li>
<li id="n_248" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_249" class="hl">        UPDATE parts</li>
<li id="n_250" class="hl">           SET inventory_accno_id <span class="hl opt">= (</span>SELECT value<span class="hl opt">::</span><span class="hl kwc">int</span></li>
<li id="n_251" class="hl">                                       FROM defaults</li>
<li id="n_252" class="hl">                          WHERE setting_key <span class="hl opt">= </span></li>
<li id="n_253" class="hl">                            <span class="hl sng">&#39;inventory_accno_id&#39;</span><span class="hl opt">)</span></li>
<li id="n_254" class="hl">         WHERE inventory_accno_id <span class="hl opt">= ?|;</span></li>
<li id="n_255" class="hl"></li>
<li id="n_256" 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_257" 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_258" class="hl"></li>
<li id="n_259" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(income_accno_id expense_accno_id)</span><span class="hl opt">) {</span></li>
<li id="n_260" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_261" class="hl">            UPDATE parts</li>
<li id="n_262" class="hl">               SET <span class="hl kwb">$_ </span><span class="hl opt">= (</span>SELECT value<span class="hl opt">::</span><span class="hl kwc">int</span></li>
<li id="n_263" class="hl">                           FROM defaults</li>
<li id="n_264" class="hl">                          WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;</span><span class="hl ipl">$_</span><span class="hl sng">&#39;</span><span class="hl opt">)</span></li>
<li id="n_265" class="hl">             WHERE <span class="hl kwb">$_ </span><span class="hl opt">= ?|;</span></li>
<li id="n_266" class="hl"></li>
<li id="n_267" 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_268" 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_269" 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_270" class="hl">    <span class="hl opt">}</span></li>
<li id="n_271" class="hl"></li>
<li id="n_272" class="hl">    <span class="hl kwa">foreach </span><span class="hl kwc">my </span><span class="hl kwb">$table </span><span class="hl opt">(</span><span class="hl sng">qw(partstax customertax vendortax tax)</span><span class="hl opt">) {</span></li>
<li id="n_273" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_274" class="hl">            DELETE FROM <span class="hl kwb">$table</span></li>
<li id="n_275" class="hl">                  WHERE chart_id <span class="hl opt">= ?|;</span></li>
<li id="n_276" class="hl"></li>
<li id="n_277" 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_278" 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_279" 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_280" class="hl">    <span class="hl opt">}</span></li>
<li id="n_281" class="hl"></li>
<li id="n_282" class="hl">    <span class="hl slc"># commit and redirect</span></li>
<li id="n_283" 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_284" class="hl"></li>
<li id="n_285" class="hl">    <span class="hl kwb">$rc</span><span class="hl opt">;</span></li>
<li id="n_286" class="hl"><span class="hl opt">}</span></li>
<li id="n_287" class="hl"></li>
<li id="n_288" class="hl"><span class="hl kwa">sub </span>gifi_accounts <span class="hl opt">{</span></li>
<li id="n_289" class="hl"></li>
<li id="n_290" 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_291" class="hl"></li>
<li id="n_292" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_293" 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_294" class="hl"></li>
<li id="n_295" 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_296" class="hl">          SELECT accno<span class="hl opt">, </span>description</li>
<li id="n_297" class="hl">            FROM gifi</li>
<li id="n_298" class="hl">        ORDER BY accno<span class="hl opt">|;</span></li>
<li id="n_299" class="hl"></li>
<li id="n_300" 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_301" 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_302" class="hl"></li>
<li id="n_303" 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_304" 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>ALL<span class="hl opt">} }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_305" class="hl">    <span class="hl opt">}</span></li>
<li id="n_306" class="hl"></li>
<li id="n_307" 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_308" 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_309" class="hl"></li>
<li id="n_310" class="hl"><span class="hl opt">}</span></li>
<li id="n_311" class="hl"></li>
<li id="n_312" class="hl"><span class="hl kwa">sub </span>get_gifi <span class="hl opt">{</span></li>
<li id="n_313" class="hl"></li>
<li id="n_314" 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_315" class="hl"></li>
<li id="n_316" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_317" 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_318" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_319" class="hl"></li>
<li id="n_320" 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_321" class="hl">        SELECT accno<span class="hl opt">, </span>description</li>
<li id="n_322" class="hl">          FROM gifi</li>
<li id="n_323" class="hl">         WHERE accno <span class="hl opt">= ?|;</span></li>
<li id="n_324" class="hl"></li>
<li id="n_325" 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_326" 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>accno<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_327" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<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_328" class="hl"></li>
<li id="n_329" 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_330" class="hl"></li>
<li id="n_331" class="hl">    <span class="hl slc"># check for transactions</span></li>
<li id="n_332" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_333" class="hl">        SELECT count<span class="hl opt">(*) </span></li>
<li id="n_334" class="hl">          FROM acc_trans a</li>
<li id="n_335" class="hl">          JOIN chart c ON <span class="hl opt">(</span>a<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_336" class="hl">          JOIN gifi g ON <span class="hl opt">(</span>c<span class="hl opt">.</span>gifi_accno <span class="hl opt">= </span>g<span class="hl opt">.</span>accno<span class="hl opt">)</span></li>
<li id="n_337" class="hl">         WHERE g<span class="hl opt">.</span>accno <span class="hl opt">= ?|;</span></li>
<li id="n_338" class="hl"></li>
<li id="n_339" 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_340" 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>accno<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_341" class="hl">    <span class="hl opt">(</span><span class="hl kwb">$numrows</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_342" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( ( </span><span class="hl kwb">$numrows </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_343" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<span class="hl opt">} = </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_344" class="hl">    <span class="hl opt">}</span></li>
<li id="n_345" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_346" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<span class="hl opt">} = </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_347" class="hl">    <span class="hl opt">}</span></li>
<li id="n_348" class="hl"></li>
<li id="n_349" 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_350" class="hl"></li>
<li id="n_351" class="hl"><span class="hl opt">}</span></li>
<li id="n_352" class="hl"></li>
<li id="n_353" class="hl"><span class="hl kwa">sub </span>save_gifi <span class="hl opt">{</span></li>
<li id="n_354" class="hl"></li>
<li id="n_355" 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_356" class="hl"></li>
<li id="n_357" 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_358" class="hl"></li>
<li id="n_359" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">} =~ </span><span class="hl kwd">s/( |&#39;)//g</span><span class="hl opt">;</span></li>
<li id="n_360" class="hl"></li>
<li id="n_361" 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 sng">qw(accno description)</span><span class="hl opt">) {</span></li>
<li id="n_362" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$item</span><span class="hl opt">} =~ </span><span class="hl kwd">s/-(-+)/-/g</span><span class="hl opt">;</span></li>
<li id="n_363" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$item</span><span class="hl opt">} =~ </span><span class="hl kwd">s/ ( )+/ /g</span><span class="hl opt">;</span></li>
<li id="n_364" class="hl">    <span class="hl opt">}</span></li>
<li id="n_365" class="hl"></li>
<li id="n_366" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;queryargs </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} );</span></li>
<li id="n_367" class="hl"></li>
<li id="n_368" class="hl">    <span class="hl slc"># id is the old account number!</span></li>
<li id="n_369" 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_370" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_371" class="hl">            UPDATE gifi </li>
<li id="n_372" class="hl">               SET accno <span class="hl opt">= ?,</span></li>
<li id="n_373" class="hl">                   description <span class="hl opt">= ?</span></li>
<li id="n_374" class="hl">             WHERE accno <span class="hl opt">= ?|;</span></li>
<li id="n_375" class="hl">        <span class="hl kwc">push </span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">};</span></li>
<li id="n_376" class="hl"></li>
<li id="n_377" class="hl">    <span class="hl opt">}</span></li>
<li id="n_378" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_379" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_380" class="hl">            INSERT INTO gifi <span class="hl opt">(</span>accno<span class="hl opt">, </span>description<span class="hl opt">)</span></li>
<li id="n_381" class="hl">                 VALUES <span class="hl opt">(?, ?)|;</span></li>
<li id="n_382" class="hl">    <span class="hl opt">}</span></li>
<li id="n_383" class="hl"></li>
<li id="n_384" 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_385" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_386" 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_387" 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_388" class="hl"></li>
<li id="n_389" class="hl"><span class="hl opt">}</span></li>
<li id="n_390" class="hl"></li>
<li id="n_391" class="hl"><span class="hl kwa">sub </span>delete_gifi <span class="hl opt">{</span></li>
<li id="n_392" class="hl"></li>
<li id="n_393" 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_394" class="hl"></li>
<li id="n_395" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_396" 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_397" class="hl"></li>
<li id="n_398" class="hl">    <span class="hl slc"># id is the old account number!</span></li>
<li id="n_399" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_400" class="hl">        DELETE FROM gifi</li>
<li id="n_401" class="hl">              WHERE accno <span class="hl opt">= ?|;</span></li>
<li id="n_402" class="hl"></li>
<li id="n_403" 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_404" 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_405" 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_406" 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_407" class="hl"></li>
<li id="n_408" class="hl"><span class="hl opt">}</span></li>
<li id="n_409" class="hl"></li>
<li id="n_410" class="hl"><span class="hl kwa">sub </span>warehouses <span class="hl opt">{</span></li>
<li id="n_411" class="hl"></li>
<li id="n_412" 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_413" class="hl"></li>
<li id="n_414" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_415" 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_416" class="hl"></li>
<li id="n_417" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">sort_order</span><span class="hl opt">();</span></li>
<li id="n_418" 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_419" class="hl">          SELECT id<span class="hl opt">, </span>description</li>
<li id="n_420" class="hl">            FROM warehouse</li>
<li id="n_421" class="hl">        ORDER BY description <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>direction<span class="hl opt">}|;</span></li>
<li id="n_422" class="hl"></li>
<li id="n_423" 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_424" 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_425" class="hl"></li>
<li id="n_426" 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_427" 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>ALL<span class="hl opt">} }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_428" class="hl">    <span class="hl opt">}</span></li>
<li id="n_429" class="hl"></li>
<li id="n_430" 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_431" 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_432" class="hl"></li>
<li id="n_433" class="hl"><span class="hl opt">}</span></li>
<li id="n_434" class="hl"></li>
<li id="n_435" class="hl"><span class="hl kwa">sub </span>get_warehouse <span class="hl opt">{</span></li>
<li id="n_436" class="hl"></li>
<li id="n_437" 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_438" class="hl"></li>
<li id="n_439" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_440" 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_441" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_442" class="hl"></li>
<li id="n_443" 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_444" class="hl">        SELECT description</li>
<li id="n_445" class="hl">          FROM warehouse</li>
<li id="n_446" class="hl">         WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_447" class="hl"></li>
<li id="n_448" 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_449" 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_450" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<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_451" 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_452" class="hl"></li>
<li id="n_453" class="hl">    <span class="hl slc"># see if it is in use</span></li>
<li id="n_454" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_455" class="hl">        SELECT count<span class="hl opt">(*) </span></li>
<li id="n_456" class="hl">          FROM inventory</li>
<li id="n_457" class="hl">         WHERE warehouse_id <span class="hl opt">= ?|;</span></li>
<li id="n_458" class="hl"></li>
<li id="n_459" 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_460" 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_461" class="hl"></li>
<li id="n_462" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<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_463" 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>orphaned<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_464" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<span class="hl opt">} = </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_465" class="hl">    <span class="hl opt">}</span></li>
<li id="n_466" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_467" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<span class="hl opt">} = </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_468" class="hl">    <span class="hl opt">}</span></li>
<li id="n_469" class="hl"></li>
<li id="n_470" 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_471" class="hl"><span class="hl opt">}</span></li>
<li id="n_472" class="hl"></li>
<li id="n_473" class="hl"><span class="hl kwa">sub </span>save_warehouse <span class="hl opt">{</span></li>
<li id="n_474" class="hl"></li>
<li id="n_475" 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_476" class="hl"></li>
<li id="n_477" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_478" 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_479" class="hl"></li>
<li id="n_480" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_481" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;queryargs </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} );</span></li>
<li id="n_482" class="hl"></li>
<li id="n_483" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} =~ </span><span class="hl kwd">s/-(-)+/-/g</span><span class="hl opt">;</span></li>
<li id="n_484" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} =~ </span><span class="hl kwd">s/ ( )+/ /g</span><span class="hl opt">;</span></li>
<li id="n_485" class="hl"></li>
<li id="n_486" 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_487" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_488" class="hl">            UPDATE warehouse </li>
<li id="n_489" class="hl">               SET description <span class="hl opt">= ?</span></li>
<li id="n_490" class="hl">             WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_491" class="hl">        <span class="hl kwc">push </span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">};</span></li>
<li id="n_492" class="hl">    <span class="hl opt">}</span></li>
<li id="n_493" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_494" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_495" class="hl">            INSERT INTO warehouse <span class="hl opt">(</span>description<span class="hl opt">)</span></li>
<li id="n_496" class="hl">                 VALUES <span class="hl opt">(?)|;</span></li>
<li id="n_497" class="hl">    <span class="hl opt">}</span></li>
<li id="n_498" class="hl"></li>
<li id="n_499" 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_500" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_501" 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_502" 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_503" class="hl"></li>
<li id="n_504" class="hl"><span class="hl opt">}</span></li>
<li id="n_505" class="hl"></li>
<li id="n_506" class="hl"><span class="hl kwa">sub </span>delete_warehouse <span class="hl opt">{</span></li>
<li id="n_507" class="hl"></li>
<li id="n_508" 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_509" class="hl"></li>
<li id="n_510" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_511" 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_512" class="hl"></li>
<li id="n_513" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_514" class="hl">        DELETE FROM warehouse</li>
<li id="n_515" class="hl">              WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_516" class="hl"></li>
<li id="n_517" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} ) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_518" 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_519" class="hl"></li>
<li id="n_520" class="hl"><span class="hl opt">}</span></li>
<li id="n_521" class="hl"></li>
<li id="n_522" class="hl"><span class="hl kwa">sub </span>departments <span class="hl opt">{</span></li>
<li id="n_523" class="hl"></li>
<li id="n_524" 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_525" class="hl"></li>
<li id="n_526" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_527" 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_528" class="hl"></li>
<li id="n_529" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">sort_order</span><span class="hl opt">();</span></li>
<li id="n_530" 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>SELECT id<span class="hl opt">, </span>description<span class="hl opt">, </span><span class="hl kwa">role</span></li>
<li id="n_531" class="hl">                     FROM department</li>
<li id="n_532" class="hl">                 ORDER BY description <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>direction<span class="hl opt">}|;</span></li>
<li id="n_533" class="hl"></li>
<li id="n_534" 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_535" 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_536" class="hl"></li>
<li id="n_537" 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_538" 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>ALL<span class="hl opt">} }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_539" class="hl">    <span class="hl opt">}</span></li>
<li id="n_540" class="hl"></li>
<li id="n_541" 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_542" 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_543" class="hl"></li>
<li id="n_544" class="hl"><span class="hl opt">}</span></li>
<li id="n_545" class="hl"></li>
<li id="n_546" class="hl"><span class="hl kwa">sub </span>get_department <span class="hl opt">{</span></li>
<li id="n_547" class="hl"></li>
<li id="n_548" 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_549" class="hl"></li>
<li id="n_550" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_551" 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_552" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_553" class="hl"></li>
<li id="n_554" 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_555" class="hl">        SELECT description<span class="hl opt">, </span><span class="hl kwa">role</span></li>
<li id="n_556" class="hl">          FROM department</li>
<li id="n_557" class="hl">         WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_558" class="hl"></li>
<li id="n_559" 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_560" 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_561" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwa">role</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_562" 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_563" class="hl"></li>
<li id="n_564" 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_565" class="hl"></li>
<li id="n_566" class="hl">    <span class="hl slc"># see if it is in use</span></li>
<li id="n_567" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_568" class="hl">        SELECT count<span class="hl opt">(*) </span></li>
<li id="n_569" class="hl">          FROM dpt_trans</li>
<li id="n_570" class="hl">         WHERE department_id <span class="hl opt">= ? |;</span></li>
<li id="n_571" class="hl"></li>
<li id="n_572" 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_573" 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_574" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<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_575" 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>orphaned<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_576" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<span class="hl opt">} = </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_577" class="hl">    <span class="hl opt">}</span></li>
<li id="n_578" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_579" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>orphaned<span class="hl opt">} = </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_580" class="hl">    <span class="hl opt">}</span></li>
<li id="n_581" class="hl"></li>
<li id="n_582" 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_583" class="hl"><span class="hl opt">}</span></li>
<li id="n_584" class="hl"></li>
<li id="n_585" class="hl"><span class="hl kwa">sub </span>save_department <span class="hl opt">{</span></li>
<li id="n_586" class="hl"></li>
<li id="n_587" 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_588" class="hl"></li>
<li id="n_589" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_590" 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_591" class="hl"></li>
<li id="n_592" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} =~ </span><span class="hl kwd">s/-(-)+/-/g</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>description<span class="hl opt">} =~ </span><span class="hl kwd">s/ ( )+/ /g</span><span class="hl opt">;</span></li>
<li id="n_594" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_595" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;queryargs </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwa">role</span><span class="hl opt">} );</span></li>
<li id="n_596" 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_597" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_598" class="hl">            UPDATE department </li>
<li id="n_599" class="hl">               SET description <span class="hl opt">= ?,</span></li>
<li id="n_600" class="hl">                   <span class="hl kwa">role </span><span class="hl opt">= ?</span></li>
<li id="n_601" class="hl">             WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_602" class="hl">        <span class="hl kwc">push </span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">};</span></li>
<li id="n_603" class="hl"></li>
<li id="n_604" class="hl">    <span class="hl opt">}</span></li>
<li id="n_605" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_606" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_607" class="hl">            INSERT INTO department <span class="hl opt">(</span>description<span class="hl opt">, </span><span class="hl kwa">role</span><span class="hl opt">)</span></li>
<li id="n_608" class="hl">                 VALUES <span class="hl opt">(?, ?)|;</span></li>
<li id="n_609" class="hl">    <span class="hl opt">}</span></li>
<li id="n_610" class="hl"></li>
<li id="n_611" 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_612" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_613" 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_614" class="hl"></li>
<li id="n_615" class="hl"><span class="hl opt">}</span></li>
<li id="n_616" class="hl"></li>
<li id="n_617" class="hl"><span class="hl kwa">sub </span>delete_department <span class="hl opt">{</span></li>
<li id="n_618" class="hl"></li>
<li id="n_619" 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_620" class="hl"></li>
<li id="n_621" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_622" 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_623" class="hl"></li>
<li id="n_624" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_625" class="hl">        DELETE FROM department</li>
<li id="n_626" class="hl">              WHERE id <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">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} );</span></li>
<li id="n_629" 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_630" class="hl"></li>
<li id="n_631" class="hl"><span class="hl opt">}</span></li>
<li id="n_632" class="hl"></li>
<li id="n_633" class="hl"><span class="hl kwa">sub </span>business <span class="hl opt">{</span></li>
<li id="n_634" class="hl"></li>
<li id="n_635" 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_636" class="hl"></li>
<li id="n_637" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_638" 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_639" class="hl"></li>
<li id="n_640" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">sort_order</span><span class="hl opt">();</span></li>
<li id="n_641" 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_642" class="hl">          SELECT id<span class="hl opt">, </span>description<span class="hl opt">, </span>discount</li>
<li id="n_643" class="hl">            FROM business</li>
<li id="n_644" class="hl">        ORDER BY description <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>direction<span class="hl opt">}|;</span></li>
<li id="n_645" class="hl"></li>
<li id="n_646" 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_647" 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_648" class="hl"></li>
<li id="n_649" 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_650" 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>ALL<span class="hl opt">} }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_651" class="hl">    <span class="hl opt">}</span></li>
<li id="n_652" class="hl"></li>
<li id="n_653" 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_654" 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_655" class="hl"></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 kwa">sub </span>get_business <span class="hl opt">{</span></li>
<li id="n_659" class="hl"></li>
<li id="n_660" 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_661" class="hl"></li>
<li id="n_662" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_663" 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_664" class="hl"></li>
<li id="n_665" 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_666" class="hl">        SELECT description<span class="hl opt">, </span>discount</li>
<li id="n_667" class="hl">          FROM business</li>
<li id="n_668" class="hl">         WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_669" class="hl"></li>
<li id="n_670" 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_671" 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_672" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>discount<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_673" 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_674" class="hl"></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">sub </span>save_business <span class="hl opt">{</span></li>
<li id="n_678" class="hl"></li>
<li id="n_679" 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_680" class="hl"></li>
<li id="n_681" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_682" 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_683" class="hl"></li>
<li id="n_684" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} =~ </span><span class="hl kwd">s/-(-)+/-/g</span><span class="hl opt">;</span></li>
<li id="n_685" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} =~ </span><span class="hl kwd">s/ ( )+/ /g</span><span class="hl opt">;</span></li>
<li id="n_686" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>discount<span class="hl opt">} /= </span><span class="hl num">100</span><span class="hl opt">;</span></li>
<li id="n_687" class="hl"></li>
<li id="n_688" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_689" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;queryargs </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>discount<span class="hl opt">} );</span></li>
<li id="n_690" class="hl"></li>
<li id="n_691" 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_692" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_693" class="hl">            UPDATE business </li>
<li id="n_694" class="hl">               SET description <span class="hl opt">= ?,</span></li>
<li id="n_695" class="hl">                   discount <span class="hl opt">= ?</span></li>
<li id="n_696" class="hl">             WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_697" class="hl">        <span class="hl kwc">push </span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">};</span></li>
<li id="n_698" class="hl"></li>
<li id="n_699" class="hl">    <span class="hl opt">}</span></li>
<li id="n_700" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_701" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span>INSERT INTO business <span class="hl opt">(</span>description<span class="hl opt">, </span>discount<span class="hl opt">)</span></li>
<li id="n_702" class="hl">                         VALUES <span class="hl opt">(?, ?)|;</span></li>
<li id="n_703" class="hl">    <span class="hl opt">}</span></li>
<li id="n_704" class="hl"></li>
<li id="n_705" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_706" 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_707" class="hl"></li>
<li id="n_708" class="hl"><span class="hl opt">}</span></li>
<li id="n_709" class="hl"></li>
<li id="n_710" class="hl"><span class="hl kwa">sub </span>delete_business <span class="hl opt">{</span></li>
<li id="n_711" 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_712" class="hl"></li>
<li id="n_713" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_714" 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_715" class="hl"></li>
<li id="n_716" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_717" class="hl">        DELETE FROM business</li>
<li id="n_718" class="hl">              WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_719" class="hl"></li>
<li id="n_720" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">} ) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_721" 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_722" class="hl"></li>
<li id="n_723" class="hl"><span class="hl opt">}</span></li>
<li id="n_724" class="hl"></li>
<li id="n_725" class="hl"><span class="hl kwa">sub </span>sic <span class="hl opt">{</span></li>
<li id="n_726" class="hl"></li>
<li id="n_727" 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_728" class="hl"></li>
<li id="n_729" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_730" 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_731" class="hl"></li>
<li id="n_732" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">sort</span><span class="hl opt">} = </span><span class="hl sng">&quot;code&quot;</span> <span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">sort</span><span class="hl opt">};</span></li>
<li id="n_733" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;a </span><span class="hl opt">= </span><span class="hl sng">qw(code description)</span><span class="hl opt">;</span></li>
<li id="n_734" class="hl"></li>
<li id="n_735" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%ordinal </span><span class="hl opt">= (</span></li>
<li id="n_736" class="hl">        code        <span class="hl opt">=&gt; </span><span class="hl num">1</span><span class="hl opt">,</span></li>
<li id="n_737" class="hl">        description <span class="hl opt">=&gt; </span><span class="hl num">3</span></li>
<li id="n_738" class="hl">    <span class="hl opt">);</span></li>
<li id="n_739" class="hl"></li>
<li id="n_740" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sortorder </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">sort_order</span><span class="hl opt">( </span>\<span class="hl kwb">&#64;a</span><span class="hl opt">, </span>\<span class="hl kwb">%ordinal </span><span class="hl opt">);</span></li>
<li id="n_741" class="hl"></li>
<li id="n_742" 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>SELECT code<span class="hl opt">, </span>sictype<span class="hl opt">, </span>description</li>
<li id="n_743" class="hl">                     FROM sic</li>
<li id="n_744" class="hl">                 ORDER BY <span class="hl kwb">$sortorder</span><span class="hl opt">|;</span></li>
<li id="n_745" class="hl"></li>
<li id="n_746" 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_747" 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_748" class="hl"></li>
<li id="n_749" 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_750" 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>ALL<span class="hl opt">} }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_751" class="hl">    <span class="hl opt">}</span></li>
<li id="n_752" class="hl"></li>
<li id="n_753" 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_754" 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_755" class="hl"></li>
<li id="n_756" class="hl"><span class="hl opt">}</span></li>
<li id="n_757" class="hl"></li>
<li id="n_758" class="hl"><span class="hl kwa">sub </span>get_sic <span class="hl opt">{</span></li>
<li id="n_759" class="hl"></li>
<li id="n_760" 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_761" class="hl"></li>
<li id="n_762" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_763" 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_764" class="hl"></li>
<li id="n_765" 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_766" class="hl">        SELECT code<span class="hl opt">, </span>sictype<span class="hl opt">, </span>description</li>
<li id="n_767" class="hl">          FROM sic</li>
<li id="n_768" class="hl">         WHERE code <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>code<span class="hl opt">} );</span></li>
<li id="n_769" class="hl"></li>
<li id="n_770" 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_771" 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_772" class="hl"></li>
<li id="n_773" 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_774" 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_775" class="hl"></li>
<li id="n_776" 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_777" 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_778" class="hl"></li>
<li id="n_779" class="hl"><span class="hl opt">}</span></li>
<li id="n_780" class="hl"></li>
<li id="n_781" class="hl"><span class="hl kwa">sub </span>save_sic <span class="hl opt">{</span></li>
<li id="n_782" class="hl"></li>
<li id="n_783" 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_784" class="hl"></li>
<li id="n_785" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_786" 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_787" class="hl"></li>
<li id="n_788" 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 sng">qw(code description)</span><span class="hl opt">) {</span></li>
<li id="n_789" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$item</span><span class="hl opt">} =~ </span><span class="hl kwd">s/-(-)+/-/g</span><span class="hl opt">;</span></li>
<li id="n_790" class="hl">    <span class="hl opt">}</span></li>
<li id="n_791" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_792" class="hl">    <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>code<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>sictype<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} );</span></li>
<li id="n_793" class="hl"></li>
<li id="n_794" class="hl">    <span class="hl slc"># if there is an id</span></li>
<li id="n_795" 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_796" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_797" class="hl">            UPDATE sic </li>
<li id="n_798" class="hl">               SET code <span class="hl opt">= ?,</span></li>
<li id="n_799" class="hl">                   sictype <span class="hl opt">= ?,</span></li>
<li id="n_800" class="hl">                   description <span class="hl opt">= ?</span></li>
<li id="n_801" class="hl">             WHERE code <span class="hl opt">= ?)|;</span></li>
<li id="n_802" class="hl">        <span class="hl kwc">push </span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">};</span></li>
<li id="n_803" class="hl"></li>
<li id="n_804" class="hl">    <span class="hl opt">}</span></li>
<li id="n_805" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_806" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_807" class="hl">        INSERT INTO sic <span class="hl opt">(</span>code<span class="hl opt">, </span>sictype<span class="hl opt">, </span>description<span class="hl opt">)</span></li>
<li id="n_808" class="hl">             VALUES <span class="hl opt">(?, ?, ?)|;</span></li>
<li id="n_809" class="hl"></li>
<li id="n_810" class="hl">    <span class="hl opt">}</span></li>
<li id="n_811" class="hl"></li>
<li id="n_812" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_813" 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_814" class="hl"></li>
<li id="n_815" class="hl"><span class="hl opt">}</span></li>
<li id="n_816" class="hl"></li>
<li id="n_817" class="hl"><span class="hl kwa">sub </span>delete_sic <span class="hl opt">{</span></li>
<li id="n_818" class="hl"></li>
<li id="n_819" 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_820" class="hl"></li>
<li id="n_821" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_822" 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_823" class="hl"></li>
<li id="n_824" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_825" class="hl">        DELETE FROM sic</li>
<li id="n_826" class="hl">              WHERE code <span class="hl opt">= ?|;</span></li>
<li id="n_827" class="hl"></li>
<li id="n_828" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>code<span class="hl opt">} );</span></li>
<li id="n_829" 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_830" class="hl"></li>
<li id="n_831" class="hl"><span class="hl opt">}</span></li>
<li id="n_832" class="hl"></li>
<li id="n_833" class="hl"><span class="hl kwa">sub </span>language <span class="hl opt">{</span></li>
<li id="n_834" class="hl"></li>
<li id="n_835" 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_836" class="hl"></li>
<li id="n_837" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_838" 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_839" class="hl"></li>
<li id="n_840" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">sort</span><span class="hl opt">} = </span><span class="hl sng">&quot;code&quot;</span> <span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">sort</span><span class="hl opt">};</span></li>
<li id="n_841" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;a </span><span class="hl opt">= </span><span class="hl sng">qw(code description)</span><span class="hl opt">;</span></li>
<li id="n_842" class="hl"></li>
<li id="n_843" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%ordinal </span><span class="hl opt">= (</span></li>
<li id="n_844" class="hl">        code        <span class="hl opt">=&gt; </span><span class="hl num">1</span><span class="hl opt">,</span></li>
<li id="n_845" class="hl">        description <span class="hl opt">=&gt; </span><span class="hl num">2</span></li>
<li id="n_846" class="hl">    <span class="hl opt">);</span></li>
<li id="n_847" class="hl"></li>
<li id="n_848" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sortorder </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">sort_order</span><span class="hl opt">( </span>\<span class="hl kwb">&#64;a</span><span class="hl opt">, </span>\<span class="hl kwb">%ordinal </span><span class="hl opt">);</span></li>
<li id="n_849" class="hl"></li>
<li id="n_850" 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_851" class="hl">          SELECT code<span class="hl opt">, </span>description</li>
<li id="n_852" class="hl">            FROM language</li>
<li id="n_853" class="hl">        ORDER BY <span class="hl kwb">$sortorder</span><span class="hl opt">|;</span></li>
<li id="n_854" class="hl"></li>
<li id="n_855" 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_856" 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_857" class="hl"></li>
<li id="n_858" 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_859" 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>ALL<span class="hl opt">} }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_860" class="hl">    <span class="hl opt">}</span></li>
<li id="n_861" class="hl"></li>
<li id="n_862" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">finish</span><span class="hl opt">;</span></li>
<li id="n_863" 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_864" class="hl"></li>
<li id="n_865" class="hl"><span class="hl opt">}</span></li>
<li id="n_866" class="hl"></li>
<li id="n_867" class="hl"><span class="hl kwa">sub </span>get_language <span class="hl opt">{</span></li>
<li id="n_868" class="hl"></li>
<li id="n_869" 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_870" class="hl"></li>
<li id="n_871" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_872" 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_873" class="hl"></li>
<li id="n_874" class="hl">    <span class="hl slc">## needs fixing (SELECT *...)</span></li>
<li id="n_875" 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_876" class="hl">        SELECT <span class="hl opt">*</span></li>
<li id="n_877" class="hl">          FROM language</li>
<li id="n_878" class="hl">         WHERE code <span class="hl opt">= ?|;</span></li>
<li id="n_879" class="hl"></li>
<li id="n_880" 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_881" 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>code<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_882" class="hl"></li>
<li id="n_883" 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_884" class="hl"></li>
<li id="n_885" 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_886" class="hl"></li>
<li id="n_887" 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_888" 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_889" class="hl"></li>
<li id="n_890" class="hl"><span class="hl opt">}</span></li>
<li id="n_891" class="hl"></li>
<li id="n_892" class="hl"><span class="hl kwa">sub </span>save_language <span class="hl opt">{</span></li>
<li id="n_893" class="hl"></li>
<li id="n_894" 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_895" class="hl"></li>
<li id="n_896" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_897" 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_898" class="hl"></li>
<li id="n_899" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>code<span class="hl opt">} =~ </span><span class="hl kwd">s/ //g</span><span class="hl opt">;</span></li>
<li id="n_900" class="hl"></li>
<li id="n_901" 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 sng">qw(code description)</span><span class="hl opt">) {</span></li>
<li id="n_902" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$item</span><span class="hl opt">} =~ </span><span class="hl kwd">s/-(-)+/-/g</span><span class="hl opt">;</span></li>
<li id="n_903" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$item</span><span class="hl opt">} =~ </span><span class="hl kwd">s/ ( )+/-/g</span><span class="hl opt">;</span></li>
<li id="n_904" class="hl">    <span class="hl opt">}</span></li>
<li id="n_905" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sth</span><span class="hl opt">;</span></li>
<li id="n_906" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;queryargs </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>code<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">} );</span></li>
<li id="n_907" class="hl"></li>
<li id="n_908" class="hl">    <span class="hl slc"># if there is an id</span></li>
<li id="n_909" 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_910" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_911" class="hl">            UPDATE language </li>
<li id="n_912" class="hl">               SET code <span class="hl opt">= ?,</span></li>
<li id="n_913" class="hl">                   description <span class="hl opt">= ?</span></li>
<li id="n_914" class="hl">             WHERE code <span class="hl opt">= ?|;</span></li>
<li id="n_915" class="hl">        <span class="hl kwc">push </span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">};</span></li>
<li id="n_916" class="hl"></li>
<li id="n_917" class="hl">    <span class="hl opt">}</span></li>
<li id="n_918" class="hl">    <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_919" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_920" class="hl">            INSERT INTO language <span class="hl opt">(</span>code<span class="hl opt">, </span>description<span class="hl opt">)</span></li>
<li id="n_921" class="hl">                 VALUES <span class="hl opt">(?, ?)|;</span></li>
<li id="n_922" class="hl">    <span class="hl opt">}</span></li>
<li id="n_923" class="hl"></li>
<li id="n_924" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_925" 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_926" class="hl"></li>
<li id="n_927" class="hl"><span class="hl opt">}</span></li>
<li id="n_928" class="hl"></li>
<li id="n_929" class="hl"><span class="hl kwa">sub </span>delete_language <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">$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_932" class="hl"></li>
<li id="n_933" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_934" 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_935" class="hl"></li>
<li id="n_936" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_937" class="hl">        DELETE FROM language</li>
<li id="n_938" class="hl">              WHERE code <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>code<span class="hl opt">} );</span></li>
<li id="n_939" class="hl"></li>
<li id="n_940" 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_941" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;{</span>dbh<span class="hl opt">};</span></li>
<li id="n_942" class="hl"></li>
<li id="n_943" class="hl"><span class="hl opt">}</span></li>
<li id="n_944" class="hl"></li>
<li id="n_945" class="hl"><span class="hl kwa">sub </span>recurring_transactions <span class="hl opt">{</span></li>
<li id="n_946" class="hl"></li>
<li id="n_947" 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_948" class="hl"></li>
<li id="n_949" 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_950" class="hl"></li>
<li id="n_951" 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>SELECT value FROM defaults 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_952" class="hl"></li>
<li id="n_953" class="hl">    <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$defaultcurrency</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_954" class="hl">    <span class="hl kwb">$defaultcurrency </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">$defaultcurrency </span><span class="hl opt">=~ </span><span class="hl kwd">s/:.*//g </span><span class="hl opt">);</span></li>
<li id="n_955" class="hl"></li>
<li id="n_956" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">sort</span><span class="hl opt">} ||= </span><span class="hl sng">&quot;nextdate&quot;</span><span class="hl opt">;</span></li>
<li id="n_957" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;a         </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwc">sort</span><span class="hl opt">} );</span></li>
<li id="n_958" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$sortorder </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">sort_order</span><span class="hl opt">( </span>\<span class="hl kwb">&#64;a </span><span class="hl opt">);</span></li>
<li id="n_959" class="hl"></li>
<li id="n_960" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_961" class="hl">           SELECT <span class="hl sng">&#39;ar&#39;</span> AS module<span class="hl opt">, </span><span class="hl sng">&#39;ar&#39;</span> AS transaction<span class="hl opt">, </span>a<span class="hl opt">.</span>invoice<span class="hl opt">,</span></li>
<li id="n_962" class="hl">                  n<span class="hl opt">.</span>name AS description<span class="hl opt">, </span>a<span class="hl opt">.</span>amount<span class="hl opt">,</span></li>
<li id="n_963" class="hl">                  s<span class="hl opt">.*, </span>se<span class="hl opt">.</span>formname AS recurringemail<span class="hl opt">,</span></li>
<li id="n_964" class="hl">                  sp<span class="hl opt">.</span>formname AS recurringprint<span class="hl opt">,</span></li>
<li id="n_965" class="hl">                  s<span class="hl opt">.</span>nextdate <span class="hl opt">- </span>current_date AS overdue<span class="hl opt">, </span></li>
<li id="n_966" class="hl">                  <span class="hl sng">&#39;customer&#39;</span> AS vc<span class="hl opt">,</span></li>
<li id="n_967" class="hl">                  ex<span class="hl opt">.</span>buy AS exchangerate<span class="hl opt">, </span>a<span class="hl opt">.</span>curr<span class="hl opt">,</span></li>
<li id="n_968" class="hl">                      <span class="hl opt">(</span>s<span class="hl opt">.</span>nextdate IS NULL OR s<span class="hl opt">.</span>nextdate <span class="hl opt">&gt; </span>s<span class="hl opt">.</span>enddate<span class="hl opt">) </span></li>
<li id="n_969" class="hl">                          AS expired</li>
<li id="n_970" class="hl">             FROM recurring s</li>
<li id="n_971" class="hl">             JOIN ar a ON <span class="hl opt">(</span>a<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_972" class="hl">             JOIN customer n ON <span class="hl opt">(</span>n<span class="hl opt">.</span>id <span class="hl opt">= </span>a<span class="hl opt">.</span>customer_id<span class="hl opt">)</span></li>
<li id="n_973" class="hl">        LEFT JOIN recurringemail se ON <span class="hl opt">(</span>se<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_974" class="hl">        LEFT JOIN recurringprint sp ON <span class="hl opt">(</span>sp<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_975" class="hl">        LEFT JOIN exchangerate ex </li>
<li id="n_976" class="hl">                  ON <span class="hl opt">(</span>ex<span class="hl opt">.</span>curr <span class="hl opt">= </span>a<span class="hl opt">.</span>curr AND a<span class="hl opt">.</span>transdate <span class="hl opt">= </span>ex<span class="hl opt">.</span>transdate<span class="hl opt">)</span></li>
<li id="n_977" class="hl"></li>
<li id="n_978" class="hl">            UNION</li>
<li id="n_979" class="hl"></li>
<li id="n_980" class="hl">          SELECT <span class="hl sng">&#39;ap&#39;</span> AS module<span class="hl opt">, </span><span class="hl sng">&#39;ap&#39;</span> AS transaction<span class="hl opt">, </span>a<span class="hl opt">.</span>invoice<span class="hl opt">,</span></li>
<li id="n_981" class="hl">                  n<span class="hl opt">.</span>name AS description<span class="hl opt">, </span>a<span class="hl opt">.</span>amount<span class="hl opt">,</span></li>
<li id="n_982" class="hl">                  s<span class="hl opt">.*, </span>se<span class="hl opt">.</span>formname AS recurringemail<span class="hl opt">,</span></li>
<li id="n_983" class="hl">                  sp<span class="hl opt">.</span>formname AS recurringprint<span class="hl opt">,</span></li>
<li id="n_984" class="hl">                  s<span class="hl opt">.</span>nextdate <span class="hl opt">- </span>current_date AS overdue<span class="hl opt">, </span><span class="hl sng">&#39;vendor&#39;</span> AS vc<span class="hl opt">,</span></li>
<li id="n_985" class="hl">                  ex<span class="hl opt">.</span>sell AS exchangerate<span class="hl opt">, </span>a<span class="hl opt">.</span>curr<span class="hl opt">,</span></li>
<li id="n_986" class="hl">                  <span class="hl opt">(</span>s<span class="hl opt">.</span>nextdate IS NULL OR s<span class="hl opt">.</span>nextdate <span class="hl opt">&gt; </span>s<span class="hl opt">.</span>enddate<span class="hl opt">) </span></li>
<li id="n_987" class="hl">                  AS expired</li>
<li id="n_988" class="hl">             FROM recurring s</li>
<li id="n_989" class="hl">             JOIN ap a ON <span class="hl opt">(</span>a<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_990" class="hl">             JOIN vendor n ON <span class="hl opt">(</span>n<span class="hl opt">.</span>id <span class="hl opt">= </span>a<span class="hl opt">.</span>vendor_id<span class="hl opt">)</span></li>
<li id="n_991" class="hl">        LEFT JOIN recurringemail se ON <span class="hl opt">(</span>se<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_992" class="hl">        LEFT JOIN recurringprint sp ON <span class="hl opt">(</span>sp<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_993" class="hl">        LEFT JOIN exchangerate ex ON </li>
<li id="n_994" class="hl">                  <span class="hl opt">(</span>ex<span class="hl opt">.</span>curr <span class="hl opt">= </span>a<span class="hl opt">.</span>curr AND a<span class="hl opt">.</span>transdate <span class="hl opt">= </span>ex<span class="hl opt">.</span>transdate<span class="hl opt">)</span></li>
<li id="n_995" class="hl"></li>
<li id="n_996" class="hl">            UNION</li>
<li id="n_997" class="hl"></li>
<li id="n_998" class="hl">           SELECT <span class="hl sng">&#39;gl&#39;</span> AS module<span class="hl opt">, </span><span class="hl sng">&#39;gl&#39;</span> AS transaction<span class="hl opt">, </span>FALSE AS invoice<span class="hl opt">,</span></li>
<li id="n_999" class="hl">                  a<span class="hl opt">.</span>description<span class="hl opt">, (</span>SELECT SUM<span class="hl opt">(</span>ac<span class="hl opt">.</span>amount<span class="hl opt">) </span></li>
<li id="n_1000" class="hl">             FROM acc_trans ac </li>
<li id="n_1001" class="hl">            WHERE ac<span class="hl opt">.</span>trans_id <span class="hl opt">= </span>a<span class="hl opt">.</span>id </li>
<li id="n_1002" class="hl">              AND ac<span class="hl opt">.</span>amount <span class="hl opt">&gt; </span><span class="hl num">0</span><span class="hl opt">) </span>AS amount<span class="hl opt">,</span></li>
<li id="n_1003" class="hl">                  s<span class="hl opt">.*, </span>se<span class="hl opt">.</span>formname AS recurringemail<span class="hl opt">,</span></li>
<li id="n_1004" class="hl">                  sp<span class="hl opt">.</span>formname AS recurringprint<span class="hl opt">,</span></li>
<li id="n_1005" class="hl">                  s<span class="hl opt">.</span>nextdate <span class="hl opt">- </span>current_date AS overdue<span class="hl opt">, </span><span class="hl sng">&#39;&#39;</span> AS vc<span class="hl opt">,</span></li>
<li id="n_1006" class="hl">                  <span class="hl sng">&#39;1&#39;</span> AS exchangerate<span class="hl opt">, </span><span class="hl kwb">$defaultcurrency </span>AS curr<span class="hl opt">,</span></li>
<li id="n_1007" class="hl">                  <span class="hl opt">(</span>s<span class="hl opt">.</span>nextdate IS NULL OR s<span class="hl opt">.</span>nextdate <span class="hl opt">&gt; </span>s<span class="hl opt">.</span>enddate<span class="hl opt">) </span></li>
<li id="n_1008" class="hl">                  AS expired</li>
<li id="n_1009" class="hl">             FROM recurring s</li>
<li id="n_1010" class="hl">             JOIN gl a ON <span class="hl opt">(</span>a<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1011" class="hl">        LEFT JOIN recurringemail se ON <span class="hl opt">(</span>se<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1012" class="hl">        LEFT JOIN recurringprint sp ON <span class="hl opt">(</span>sp<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1013" class="hl"></li>
<li id="n_1014" class="hl">            UNION</li>
<li id="n_1015" class="hl"></li>
<li id="n_1016" class="hl">           SELECT <span class="hl sng">&#39;oe&#39;</span> AS module<span class="hl opt">, </span><span class="hl sng">&#39;so&#39;</span> AS transaction<span class="hl opt">, </span>FALSE AS invoice<span class="hl opt">,</span></li>
<li id="n_1017" class="hl">                  n<span class="hl opt">.</span>name AS description<span class="hl opt">, </span>a<span class="hl opt">.</span>amount<span class="hl opt">,</span></li>
<li id="n_1018" class="hl">                  s<span class="hl opt">.*, </span>se<span class="hl opt">.</span>formname AS recurringemail<span class="hl opt">,</span></li>
<li id="n_1019" class="hl">                  sp<span class="hl opt">.</span>formname AS recurringprint<span class="hl opt">,</span></li>
<li id="n_1020" class="hl">                  s<span class="hl opt">.</span>nextdate <span class="hl opt">- </span>current_date AS overdue<span class="hl opt">, </span></li>
<li id="n_1021" class="hl">                  <span class="hl sng">&#39;customer&#39;</span> AS vc<span class="hl opt">,</span></li>
<li id="n_1022" class="hl">                  ex<span class="hl opt">.</span>buy AS exchangerate<span class="hl opt">, </span>a<span class="hl opt">.</span>curr<span class="hl opt">,</span></li>
<li id="n_1023" class="hl">                  <span class="hl opt">(</span>s<span class="hl opt">.</span>nextdate IS NULL OR s<span class="hl opt">.</span>nextdate <span class="hl opt">&gt; </span>s<span class="hl opt">.</span>enddate<span class="hl opt">) </span></li>
<li id="n_1024" class="hl">                  AS expired</li>
<li id="n_1025" class="hl">             FROM recurring s</li>
<li id="n_1026" class="hl">             JOIN oe a ON <span class="hl opt">(</span>a<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1027" class="hl">             JOIN customer n ON <span class="hl opt">(</span>n<span class="hl opt">.</span>id <span class="hl opt">= </span>a<span class="hl opt">.</span>customer_id<span class="hl opt">)</span></li>
<li id="n_1028" class="hl">        LEFT JOIN recurringemail se ON <span class="hl opt">(</span>se<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1029" class="hl">        LEFT JOIN recurringprint sp ON <span class="hl opt">(</span>sp<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1030" class="hl">        LEFT JOIN exchangerate ex ON </li>
<li id="n_1031" class="hl">                  <span class="hl opt">(</span>ex<span class="hl opt">.</span>curr <span class="hl opt">= </span>a<span class="hl opt">.</span>curr AND a<span class="hl opt">.</span>transdate <span class="hl opt">= </span>ex<span class="hl opt">.</span>transdate<span class="hl opt">)</span></li>
<li id="n_1032" class="hl">            WHERE a<span class="hl opt">.</span>quotation <span class="hl opt">= </span><span class="hl sng">&#39;0&#39;</span></li>
<li id="n_1033" class="hl"></li>
<li id="n_1034" class="hl">            UNION</li>
<li id="n_1035" class="hl"></li>
<li id="n_1036" class="hl">           SELECT <span class="hl sng">&#39;oe&#39;</span> AS module<span class="hl opt">, </span><span class="hl sng">&#39;po&#39;</span> AS transaction<span class="hl opt">, </span>FALSE AS invoice<span class="hl opt">,</span></li>
<li id="n_1037" class="hl">                  n<span class="hl opt">.</span>name AS description<span class="hl opt">, </span>a<span class="hl opt">.</span>amount<span class="hl opt">,</span></li>
<li id="n_1038" class="hl">                  s<span class="hl opt">.*, </span>se<span class="hl opt">.</span>formname AS recurringemail<span class="hl opt">,</span></li>
<li id="n_1039" class="hl">                  sp<span class="hl opt">.</span>formname AS recurringprint<span class="hl opt">,</span></li>
<li id="n_1040" class="hl">                  s<span class="hl opt">.</span>nextdate <span class="hl opt">- </span>current_date AS overdue<span class="hl opt">, </span><span class="hl sng">&#39;vendor&#39;</span> AS vc<span class="hl opt">,</span></li>
<li id="n_1041" class="hl">                  ex<span class="hl opt">.</span>sell AS exchangerate<span class="hl opt">, </span>a<span class="hl opt">.</span>curr<span class="hl opt">,</span></li>
<li id="n_1042" class="hl">                  <span class="hl opt">(</span>s<span class="hl opt">.</span>nextdate IS NULL OR s<span class="hl opt">.</span>nextdate <span class="hl opt">&gt; </span>s<span class="hl opt">.</span>enddate<span class="hl opt">) </span></li>
<li id="n_1043" class="hl">                  AS expired</li>
<li id="n_1044" class="hl">             FROM recurring s</li>
<li id="n_1045" class="hl">             JOIN oe a ON <span class="hl opt">(</span>a<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1046" class="hl">             JOIN vendor n ON <span class="hl opt">(</span>n<span class="hl opt">.</span>id <span class="hl opt">= </span>a<span class="hl opt">.</span>vendor_id<span class="hl opt">)</span></li>
<li id="n_1047" class="hl">        LEFT JOIN recurringemail se ON <span class="hl opt">(</span>se<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1048" class="hl">        LEFT JOIN recurringprint sp ON <span class="hl opt">(</span>sp<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1049" class="hl">        LEFT JOIN exchangerate ex ON </li>
<li id="n_1050" class="hl">                  <span class="hl opt">(</span>ex<span class="hl opt">.</span>curr <span class="hl opt">= </span>a<span class="hl opt">.</span>curr AND a<span class="hl opt">.</span>transdate <span class="hl opt">= </span>ex<span class="hl opt">.</span>transdate<span class="hl opt">)</span></li>
<li id="n_1051" class="hl">            WHERE a<span class="hl opt">.</span>quotation <span class="hl opt">= </span><span class="hl sng">&#39;0&#39;</span></li>
<li id="n_1052" class="hl"></li>
<li id="n_1053" class="hl">         ORDER BY <span class="hl kwb">$sortorder</span><span class="hl opt">|;</span></li>
<li id="n_1054" class="hl"></li>
<li id="n_1055" 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_1056" 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_1057" class="hl"></li>
<li id="n_1058" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$id</span><span class="hl opt">;</span></li>
<li id="n_1059" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$transaction</span><span class="hl opt">;</span></li>
<li id="n_1060" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%e </span><span class="hl opt">= ();</span></li>
<li id="n_1061" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%p </span><span class="hl opt">= ();</span></li>
<li id="n_1062" class="hl"></li>
<li id="n_1063" 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_1064" class="hl"></li>
<li id="n_1065" class="hl">        <span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>exchangerate<span class="hl opt">} ||= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_1066" class="hl"></li>
<li id="n_1067" 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>id<span class="hl opt">} != </span><span class="hl kwb">$id </span><span class="hl opt">) {</span></li>
<li id="n_1068" class="hl"></li>
<li id="n_1069" class="hl">            <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">%e</span><span class="hl opt">) {</span></li>
<li id="n_1070" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]-&gt;{</span>recurringemail<span class="hl opt">} =</span></li>
<li id="n_1071" class="hl">                  <span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_1072" class="hl">                <span class="hl kwa">for </span><span class="hl opt">( </span><span class="hl kwc">keys </span><span class="hl kwb">%e </span><span class="hl opt">) {</span></li>
<li id="n_1073" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]</span></li>
<li id="n_1074" class="hl">                      <span class="hl opt">-&gt;{</span>recurringemail<span class="hl opt">} .= </span><span class="hl sng">&quot;${_}:&quot;</span><span class="hl opt">;</span></li>
<li id="n_1075" class="hl">                <span class="hl opt">}</span></li>
<li id="n_1076" class="hl">                <span class="hl kwc">chop </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]</span></li>
<li id="n_1077" class="hl">                  <span class="hl opt">-&gt;{</span>recurringemail<span class="hl opt">};</span></li>
<li id="n_1078" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1079" class="hl"></li>
<li id="n_1080" class="hl">            <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">%p</span><span class="hl opt">) {</span></li>
<li id="n_1081" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]-&gt;{</span>recurringprint<span class="hl opt">} =</span></li>
<li id="n_1082" class="hl">                  <span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_1083" class="hl">                <span class="hl kwa">for </span><span class="hl opt">( </span><span class="hl kwc">keys </span><span class="hl kwb">%p </span><span class="hl opt">) {</span></li>
<li id="n_1084" class="hl">                    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]</span></li>
<li id="n_1085" class="hl">                      <span class="hl opt">-&gt;{</span>recurringprint<span class="hl opt">} .= </span><span class="hl sng">&quot;${_}:&quot;</span><span class="hl opt">;</span></li>
<li id="n_1086" class="hl">                <span class="hl opt">}</span></li>
<li id="n_1087" class="hl">                <span class="hl kwc">chop </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]</span></li>
<li id="n_1088" class="hl">                  <span class="hl opt">-&gt;{</span>recurringprint<span class="hl opt">};</span></li>
<li id="n_1089" class="hl">            <span class="hl opt">}</span></li>
<li id="n_1090" class="hl"></li>
<li id="n_1091" class="hl">            <span class="hl kwb">%e </span><span class="hl opt">= ();</span></li>
<li id="n_1092" class="hl">            <span class="hl kwb">%p </span><span class="hl opt">= ();</span></li>
<li id="n_1093" class="hl"></li>
<li id="n_1094" class="hl">            <span class="hl kwc">push </span><span class="hl opt">&#64;{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>transaction<span class="hl opt">} } }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_1095" class="hl"></li>
<li id="n_1096" class="hl">            <span class="hl kwb">$id </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_1097" class="hl">            <span class="hl kwb">$i  </span><span class="hl opt">= </span><span class="hl kwb">$#</span><span class="hl opt">{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>transaction<span class="hl opt">} } };</span></li>
<li id="n_1098" class="hl"></li>
<li id="n_1099" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1100" class="hl"></li>
<li id="n_1101" class="hl">        <span class="hl kwb">$transaction </span><span class="hl opt">= </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>transaction<span class="hl opt">};</span></li>
<li id="n_1102" class="hl"></li>
<li id="n_1103" class="hl">        <span class="hl kwb">$e</span><span class="hl opt">{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>recurringemail<span class="hl opt">} } = </span><span class="hl num">1 </span><span class="hl kwa">if </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>recurringemail<span class="hl opt">};</span></li>
<li id="n_1104" class="hl">        <span class="hl kwb">$p</span><span class="hl opt">{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>recurringprint<span class="hl opt">} } = </span><span class="hl num">1 </span><span class="hl kwa">if </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>recurringprint<span class="hl opt">};</span></li>
<li id="n_1105" class="hl"></li>
<li id="n_1106" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1107" class="hl"></li>
<li id="n_1108" 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_1109" class="hl"></li>
<li id="n_1110" class="hl">    <span class="hl slc"># this is for the last row</span></li>
<li id="n_1111" class="hl">    <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">%e</span><span class="hl opt">) {</span></li>
<li id="n_1112" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]-&gt;{</span>recurringemail<span class="hl opt">} = </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_1113" class="hl">        <span class="hl kwa">for </span><span class="hl opt">( </span><span class="hl kwc">keys </span><span class="hl kwb">%e </span><span class="hl opt">) {</span></li>
<li id="n_1114" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]-&gt;{</span>recurringemail<span class="hl opt">} .=</span></li>
<li id="n_1115" class="hl">              <span class="hl sng">&quot;${_}:&quot;</span><span class="hl opt">;</span></li>
<li id="n_1116" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1117" class="hl">        <span class="hl kwc">chop </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]-&gt;{</span>recurringemail<span class="hl opt">};</span></li>
<li id="n_1118" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1119" class="hl"></li>
<li id="n_1120" class="hl">    <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">%p</span><span class="hl opt">) {</span></li>
<li id="n_1121" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]-&gt;{</span>recurringprint<span class="hl opt">} = </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_1122" class="hl">        <span class="hl kwa">for </span><span class="hl opt">( </span><span class="hl kwc">keys </span><span class="hl kwb">%p </span><span class="hl opt">) {</span></li>
<li id="n_1123" class="hl">            <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]-&gt;{</span>recurringprint<span class="hl opt">} .=</span></li>
<li id="n_1124" class="hl">              <span class="hl sng">&quot;${_}:&quot;</span><span class="hl opt">;</span></li>
<li id="n_1125" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1126" class="hl">        <span class="hl kwc">chop </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transactions<span class="hl opt">}{</span><span class="hl kwb">$transaction</span><span class="hl opt">}-&gt;[</span><span class="hl kwb">$i</span><span class="hl opt">]-&gt;{</span>recurringprint<span class="hl opt">};</span></li>
<li id="n_1127" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1128" class="hl"></li>
<li id="n_1129" 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_1130" class="hl"></li>
<li id="n_1131" class="hl"><span class="hl opt">}</span></li>
<li id="n_1132" class="hl"></li>
<li id="n_1133" class="hl"><span class="hl kwa">sub </span>recurring_details <span class="hl opt">{</span></li>
<li id="n_1134" class="hl"></li>
<li id="n_1135" 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">$id </span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_1136" class="hl"></li>
<li id="n_1137" 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_1138" 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_1139" class="hl">           SELECT s<span class="hl opt">.*, </span>ar<span class="hl opt">.</span>id AS arid<span class="hl opt">, </span>ar<span class="hl opt">.</span>invoice AS arinvoice<span class="hl opt">,</span></li>
<li id="n_1140" class="hl">                  ap<span class="hl opt">.</span>id AS apid<span class="hl opt">, </span>ap<span class="hl opt">.</span>invoice AS apinvoice<span class="hl opt">,</span></li>
<li id="n_1141" class="hl">                  ar<span class="hl opt">.</span>duedate <span class="hl opt">- </span>ar<span class="hl opt">.</span>transdate AS overdue<span class="hl opt">,</span></li>
<li id="n_1142" class="hl">                  ar<span class="hl opt">.</span>datepaid <span class="hl opt">- </span>ar<span class="hl opt">.</span>transdate AS paid<span class="hl opt">,</span></li>
<li id="n_1143" class="hl">                  oe<span class="hl opt">.</span>reqdate <span class="hl opt">- </span>oe<span class="hl opt">.</span>transdate AS req<span class="hl opt">,</span></li>
<li id="n_1144" class="hl">                  oe<span class="hl opt">.</span>id AS oeid<span class="hl opt">, </span>oe<span class="hl opt">.</span>customer_id<span class="hl opt">, </span>oe<span class="hl opt">.</span>vendor_id</li>
<li id="n_1145" class="hl">             FROM recurring s</li>
<li id="n_1146" class="hl">        LEFT JOIN ar ON <span class="hl opt">(</span>ar<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1147" class="hl">        LEFT JOIN ap ON <span class="hl opt">(</span>ap<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1148" class="hl">        LEFT JOIN oe ON <span class="hl opt">(</span>oe<span class="hl opt">.</span>id <span class="hl opt">= </span>s<span class="hl opt">.</span>id<span class="hl opt">)</span></li>
<li id="n_1149" class="hl">            WHERE s<span class="hl opt">.</span>id <span class="hl opt">= ?|;</span></li>
<li id="n_1150" class="hl"></li>
<li id="n_1151" 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_1152" 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_1153" class="hl"></li>
<li id="n_1154" 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_1155" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} = </span><span class="hl sng">&quot;customer&quot;</span> <span class="hl kwa">if </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>customer_id<span class="hl opt">};</span></li>
<li id="n_1156" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>vc<span class="hl opt">} = </span><span class="hl sng">&quot;vendor&quot;</span>   <span class="hl kwa">if </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>vendor_id<span class="hl opt">};</span></li>
<li id="n_1157" 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_1158" 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_1159" class="hl"></li>
<li id="n_1160" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invoice<span class="hl opt">} = ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>arid<span class="hl opt">} &amp;&amp; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>arinvoice<span class="hl opt">} );</span></li>
<li id="n_1161" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invoice<span class="hl opt">} = ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>apid<span class="hl opt">} &amp;&amp; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>apinvoice<span class="hl opt">} )</span></li>
<li id="n_1162" class="hl">      <span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>invoice<span class="hl opt">};</span></li>
<li id="n_1163" class="hl"></li>
<li id="n_1164" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1165" class="hl">        SELECT <span class="hl opt">* </span></li>
<li id="n_1166" class="hl">          FROM recurringemail</li>
<li id="n_1167" class="hl">         WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_1168" class="hl"></li>
<li id="n_1169" class="hl">    <span class="hl kwb">$sth </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1170" class="hl">    <span class="hl kwb">$sth</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">$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_1171" class="hl"></li>
<li id="n_1172" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>recurringemail<span class="hl opt">} = </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_1173" class="hl"></li>
<li id="n_1174" 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_1175" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>recurringemail<span class="hl opt">} .= </span><span class="hl sng">&quot;</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{formname}:</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{format}:&quot;</span><span class="hl opt">;</span></li>
<li id="n_1176" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>message<span class="hl opt">} = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>message<span class="hl opt">};</span></li>
<li id="n_1177" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1178" class="hl"></li>
<li id="n_1179" 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_1180" class="hl"></li>
<li id="n_1181" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1182" class="hl">        SELECT <span class="hl opt">* </span></li>
<li id="n_1183" class="hl">          FROM recurringprint</li>
<li id="n_1184" class="hl">         WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_1185" class="hl"></li>
<li id="n_1186" 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_1187" 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_1188" class="hl"></li>
<li id="n_1189" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>recurringprint<span class="hl opt">} = </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_1190" 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_1191" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>recurringprint<span class="hl opt">} .=</span></li>
<li id="n_1192" class="hl">          <span class="hl sng">&quot;</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{formname}:</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{format}:</span><span class="hl ipl">$ref</span><span class="hl sng">-&gt;{printer}:&quot;</span><span class="hl opt">;</span></li>
<li id="n_1193" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1194" class="hl"></li>
<li id="n_1195" 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_1196" class="hl"></li>
<li id="n_1197" class="hl">    <span class="hl kwc">chop </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>recurringemail<span class="hl opt">};</span></li>
<li id="n_1198" class="hl">    <span class="hl kwc">chop </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>recurringprint<span class="hl opt">};</span></li>
<li id="n_1199" class="hl"></li>
<li id="n_1200" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(arinvoice apinvoice)</span><span class="hl opt">) { </span><span class="hl kwc">delete </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} }</span></li>
<li id="n_1201" class="hl"></li>
<li id="n_1202" 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_1203" class="hl"></li>
<li id="n_1204" class="hl"><span class="hl opt">}</span></li>
<li id="n_1205" class="hl"></li>
<li id="n_1206" class="hl"><span class="hl kwa">sub </span>update_recurring <span class="hl opt">{</span></li>
<li id="n_1207" class="hl"></li>
<li id="n_1208" 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">$id </span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_1209" class="hl"></li>
<li id="n_1210" 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_1211" class="hl"></li>
<li id="n_1212" class="hl">    <span class="hl kwb">$id </span><span class="hl opt">= </span><span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">quote</span><span class="hl opt">(</span><span class="hl kwb">$id</span><span class="hl opt">);</span></li>
<li id="n_1213" 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_1214" class="hl">        SELECT nextdate<span class="hl opt">, </span>repeat<span class="hl opt">, </span>unit</li>
<li id="n_1215" class="hl">          FROM recurring</li>
<li id="n_1216" class="hl">         WHERE id <span class="hl opt">= </span><span class="hl kwb">$id</span><span class="hl opt">|;</span></li>
<li id="n_1217" class="hl"></li>
<li id="n_1218" class="hl">    <span class="hl kwc">my </span><span class="hl opt">( </span><span class="hl kwb">$nextdate</span><span class="hl opt">, </span><span class="hl kwb">$repeat</span><span class="hl opt">, </span><span class="hl kwb">$unit </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_1219" class="hl"></li>
<li id="n_1220" class="hl">    <span class="hl kwb">$nextdate </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">$nextdate</span><span class="hl opt">);</span></li>
<li id="n_1221" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$interval </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 sng">&quot;</span><span class="hl ipl">$repeat </span><span class="hl sng"></span><span class="hl ipl">$unit</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_1222" class="hl"></li>
<li id="n_1223" class="hl">    <span class="hl slc"># check if it is the last date</span></li>
<li id="n_1224" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1225" class="hl">        SELECT <span class="hl opt">(</span>date <span class="hl kwb">$nextdate </span><span class="hl opt">+ </span>interval <span class="hl kwb">$interval</span><span class="hl opt">) &gt; </span>enddate</li>
<li id="n_1226" class="hl">          FROM recurring</li>
<li id="n_1227" class="hl">         WHERE id <span class="hl opt">= </span><span class="hl kwb">$id</span><span class="hl opt">|;</span></li>
<li id="n_1228" class="hl"></li>
<li id="n_1229" class="hl">    <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$last_repeat</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_1230" class="hl">    <span class="hl kwa">if </span><span class="hl opt">(</span><span class="hl kwb">$last_repeat</span><span class="hl opt">) {</span></li>
<li id="n_1231" class="hl">        <span class="hl kwb">$advance</span><span class="hl opt">{ </span><span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;{</span>dbdriver<span class="hl opt">} } = </span><span class="hl sng">&quot;NULL&quot;</span><span class="hl opt">;</span></li>
<li id="n_1232" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1233" class="hl"></li>
<li id="n_1234" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1235" class="hl">        UPDATE recurring </li>
<li id="n_1236" class="hl">           SET nextdate <span class="hl opt">= (</span>date <span class="hl kwb">$nextdate </span><span class="hl opt">+ </span>interval <span class="hl kwb">$interval</span><span class="hl opt">)</span></li>
<li id="n_1237" class="hl">         WHERE id <span class="hl opt">= </span><span class="hl kwb">$id</span><span class="hl opt">|;</span></li>
<li id="n_1238" class="hl"></li>
<li id="n_1239" 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_1240" class="hl"></li>
<li id="n_1241" 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_1242" class="hl"></li>
<li id="n_1243" class="hl"><span class="hl opt">}</span></li>
<li id="n_1244" class="hl"></li>
<li id="n_1245" class="hl"><span class="hl kwa">sub </span>check_template_name <span class="hl opt">{</span></li>
<li id="n_1246" class="hl"></li>
<li id="n_1247" 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_1248" class="hl"></li>
<li id="n_1249" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;allowedsuff </span><span class="hl opt">= </span><span class="hl sng">qw(css tex txt html xml)</span><span class="hl opt">;</span></li>
<li id="n_1250" 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>file<span class="hl opt">} =~ </span><span class="hl kwd">/^(.:)*?\/</span><span class="hl opt">|:|</span>\<span class="hl opt">.</span>\<span class="hl opt">.</span>\<span class="hl kwd">/|^\/</span><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 kwd">error</span><span class="hl opt">(</span><span class="hl sng">&quot;Directory transversal not allowed.&quot;</span><span class="hl opt">);</span></li>
<li id="n_1252" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1253" 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>file<span class="hl opt">} =~ </span><span class="hl kwd">/^${LedgerSMB::Sysconfig::backuppath}\/</span><span class="hl opt">/ ) {</span></li>
<li id="n_1254" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">error</span><span class="hl opt">(</span></li>
<li id="n_1255" class="hl"><span class="hl sng">&quot;Not allowed to access ${LedgerSMB::Sysconfig::backuppath}/ with this method&quot;</span></li>
<li id="n_1256" class="hl">        <span class="hl opt">);</span></li>
<li id="n_1257" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1258" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$whitelisted </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1259" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl kwb">&#64;allowedsuff</span><span class="hl opt">) {</span></li>
<li id="n_1260" 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>file<span class="hl opt">} =~ </span><span class="hl kwd">/$_$/ </span><span class="hl opt">) {</span></li>
<li id="n_1261" class="hl">            <span class="hl kwb">$whitelisted </span><span class="hl opt">= </span><span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_1262" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1263" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1264" class="hl">    <span class="hl kwa">if </span><span class="hl opt">( !</span><span class="hl kwb">$whitelisted </span><span class="hl opt">) {</span></li>
<li id="n_1265" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">error</span><span class="hl opt">(</span><span class="hl sng">&quot;Error:  File is of type that is not allowed.&quot;</span><span class="hl opt">);</span></li>
<li id="n_1266" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1267" class="hl"></li>
<li id="n_1268" 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>file<span class="hl opt">} !~ </span><span class="hl kwd">/^$myconfig-&gt;{templates}\/</span><span class="hl opt">/ ) {</span></li>
<li id="n_1269" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">error</span><span class="hl opt">(</span><span class="hl sng">&quot;Not in a whitelisted directory: </span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{file}&quot;</span><span class="hl opt">)</span></li>
<li id="n_1270" class="hl">          <span class="hl kwa">unless </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>file<span class="hl opt">} =~ </span><span class="hl kwd">/^css\/</span><span class="hl opt">/;</span></li>
<li id="n_1271" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1272" class="hl"><span class="hl opt">}</span></li>
<li id="n_1273" class="hl"></li>
<li id="n_1274" class="hl"><span class="hl kwa">sub </span>load_template <span class="hl opt">{</span></li>
<li id="n_1275" class="hl"></li>
<li id="n_1276" 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_1277" class="hl"></li>
<li id="n_1278" class="hl">    <span class="hl kwb">$self</span><span class="hl opt">-&gt;</span><span class="hl kwd">check_template_name</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></li>
<li id="n_1279" class="hl">    <span class="hl kwc">open</span><span class="hl opt">( </span>TEMPLATE<span class="hl opt">, </span><span class="hl sng">&#39;&lt;&#39;</span><span class="hl opt">, </span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{file}&quot;</span> <span class="hl opt">)</span></li>
<li id="n_1280" class="hl">      <span class="hl kwc">or </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">error</span><span class="hl opt">(</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{file} : </span><span class="hl ipl">$!</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_1281" class="hl"></li>
<li id="n_1282" class="hl">    <span class="hl kwa">while </span><span class="hl opt">(&lt;</span>TEMPLATE<span class="hl opt">&gt;) {</span></li>
<li id="n_1283" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>body<span class="hl opt">} .= </span><span class="hl kwb">$_</span><span class="hl opt">;</span></li>
<li id="n_1284" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1285" class="hl"></li>
<li id="n_1286" class="hl">    <span class="hl kwc">close</span><span class="hl opt">(</span>TEMPLATE<span class="hl opt">);</span></li>
<li id="n_1287" class="hl"></li>
<li id="n_1288" class="hl"><span class="hl opt">}</span></li>
<li id="n_1289" class="hl"></li>
<li id="n_1290" class="hl"><span class="hl kwa">sub </span>save_template <span class="hl opt">{</span></li>
<li id="n_1291" class="hl"></li>
<li id="n_1292" 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_1293" class="hl"></li>
<li id="n_1294" class="hl">    <span class="hl kwb">$self</span><span class="hl opt">-&gt;</span><span class="hl kwd">check_template_name</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></li>
<li id="n_1295" class="hl">    <span class="hl kwc">open</span><span class="hl opt">( </span>TEMPLATE<span class="hl opt">, </span><span class="hl sng">&#39;&gt;&#39;</span><span class="hl opt">, </span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{file}&quot;</span> <span class="hl opt">)</span></li>
<li id="n_1296" class="hl">      <span class="hl kwc">or </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">error</span><span class="hl opt">(</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{file} : </span><span class="hl ipl">$!</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_1297" class="hl"></li>
<li id="n_1298" class="hl">    <span class="hl slc"># strip</span></li>
<li id="n_1299" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>body<span class="hl opt">} =~ </span><span class="hl kwd">s/\r//g</span><span class="hl opt">;</span></li>
<li id="n_1300" class="hl">    <span class="hl kwc">print </span>TEMPLATE <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>body<span class="hl opt">};</span></li>
<li id="n_1301" class="hl"></li>
<li id="n_1302" class="hl">    <span class="hl kwc">close</span><span class="hl opt">(</span>TEMPLATE<span class="hl opt">);</span></li>
<li id="n_1303" class="hl"></li>
<li id="n_1304" class="hl"><span class="hl opt">}</span></li>
<li id="n_1305" class="hl"></li>
<li id="n_1306" class="hl"><span class="hl kwa">sub </span>save_preferences <span class="hl opt">{</span></li>
<li id="n_1307" class="hl"></li>
<li id="n_1308" 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_1309" class="hl"></li>
<li id="n_1310" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_1311" 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_1312" class="hl"></li>
<li id="n_1313" class="hl">    <span class="hl slc"># get username, is same as requested?</span></li>
<li id="n_1314" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">;</span></li>
<li id="n_1315" 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_1316" class="hl">        SELECT login</li>
<li id="n_1317" class="hl">          FROM employee</li>
<li id="n_1318" class="hl">         WHERE login <span class="hl opt">= ?|;</span></li>
<li id="n_1319" class="hl">    <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>login<span class="hl opt">} );</span></li>
<li id="n_1320" 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_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><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1322" class="hl">    <span class="hl kwc">my </span><span class="hl opt">(</span><span class="hl kwb">$dbusername</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_1323" 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_1324" class="hl"></li>
<li id="n_1325" class="hl">    <span class="hl kwa">return </span><span class="hl num">0 </span><span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$dbusername </span><span class="hl kwc">ne </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>login<span class="hl opt">} );</span></li>
<li id="n_1326" class="hl"></li>
<li id="n_1327" class="hl">    <span class="hl slc"># update name</span></li>
<li id="n_1328" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1329" class="hl">        UPDATE employee</li>
<li id="n_1330" class="hl">           SET name <span class="hl opt">= ?</span></li>
<li id="n_1331" class="hl">         WHERE login <span class="hl opt">= ?|;</span></li>
<li id="n_1332" class="hl"></li>
<li id="n_1333" class="hl">    <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= ( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>name<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>login<span class="hl opt">} );</span></li>
<li id="n_1334" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1335" class="hl"></li>
<li id="n_1336" class="hl">    <span class="hl slc"># get default currency</span></li>
<li id="n_1337" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1338" class="hl">        SELECT value<span class="hl opt">, (</span>SELECT value FROM defaults</li>
<li id="n_1339" class="hl">                        WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;businessnumber&#39;</span><span class="hl opt">)</span></li>
<li id="n_1340" class="hl">          FROM defaults</li>
<li id="n_1341" 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_1342" class="hl"></li>
<li id="n_1343" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>businessnumber<span class="hl opt">} ) =</span></li>
<li id="n_1344" class="hl">      <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_1345" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>currency<span class="hl opt">} =~ </span><span class="hl kwd">s/:.*//</span><span class="hl opt">;</span></li>
<li id="n_1346" class="hl"></li>
<li id="n_1347" 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_1348" class="hl"></li>
<li id="n_1349" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$myconfig </span><span class="hl opt">= </span>LedgerSMB<span class="hl opt">::</span>User-<span class="hl opt">&gt;</span><span class="hl kwd">new</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>login<span class="hl opt">} );</span></li>
<li id="n_1350" class="hl"></li>
<li id="n_1351" class="hl">    <span class="hl kwc">map </span><span class="hl opt">{ </span><span class="hl kwb">$myconfig</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 kwb">$_</span><span class="hl opt">} </span><span class="hl kwa">if </span><span class="hl kwc">exists </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_1352" class="hl">      <span class="hl sng">qw(name email dateformat signature numberformat vclimit tel fax</span></li>
<li id="n_1353" class="hl"><span class="hl sng">      company menuwidth countrycode address timeout stylesheet</span></li>
<li id="n_1354" class="hl"><span class="hl sng">      printer password)</span><span class="hl opt">;</span></li>
<li id="n_1355" class="hl"></li>
<li id="n_1356" class="hl">    <span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;{</span>password<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>new_password<span class="hl opt">}</span></li>
<li id="n_1357" 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>old_password<span class="hl opt">} </span><span class="hl kwc">ne </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>new_password<span class="hl opt">} );</span></li>
<li id="n_1358" class="hl"></li>
<li id="n_1359" class="hl">    <span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;</span><span class="hl kwd">save_member</span><span class="hl opt">();</span></li>
<li id="n_1360" class="hl"></li>
<li id="n_1361" class="hl">    <span class="hl num">1</span><span class="hl opt">;</span></li>
<li id="n_1362" class="hl"></li>
<li id="n_1363" class="hl"><span class="hl opt">}</span></li>
<li id="n_1364" class="hl"></li>
<li id="n_1365" class="hl"><span class="hl kwa">sub </span>save_defaults <span class="hl opt">{</span></li>
<li id="n_1366" class="hl"></li>
<li id="n_1367" 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_1368" class="hl"></li>
<li id="n_1369" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(IC IC_income IC_expense FX_gain FX_loss)</span><span class="hl opt">) {</span></li>
<li id="n_1370" class="hl">        <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 kwc">split </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">};</span></li>
<li id="n_1371" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1372" class="hl"></li>
<li id="n_1373" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;a</span><span class="hl opt">;</span></li>
<li id="n_1374" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>curr<span class="hl opt">} =~ </span><span class="hl kwd">s/ //g</span><span class="hl opt">;</span></li>
<li id="n_1375" 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>curr<span class="hl opt">} ) { </span><span class="hl kwc">push</span><span class="hl opt">( </span><span class="hl kwb">&#64;a</span><span class="hl opt">, </span><span class="hl kwc">uc pack </span><span class="hl sng">&quot;A3&quot;</span><span class="hl opt">, </span><span class="hl kwb">$_ </span><span class="hl opt">) </span><span class="hl kwa">if </span><span class="hl kwb">$_ </span><span class="hl opt">}</span></li>
<li id="n_1376" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>curr<span class="hl opt">} = </span><span class="hl kwc">join </span><span class="hl sng">&#39;:&#39;</span><span class="hl opt">, </span><span class="hl kwb">&#64;a</span><span class="hl opt">;</span></li>
<li id="n_1377" class="hl"></li>
<li id="n_1378" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_1379" 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_1380" class="hl"></li>
<li id="n_1381" class="hl">    <span class="hl slc"># save defaults</span></li>
<li id="n_1382" class="hl">    <span class="hl kwb">$sth_plain </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 sng">&quot;</span></li>
<li id="n_1383" class="hl"><span class="hl sng">        UPDATE defaults SET value = ? WHERE setting_key = ?&quot;</span> <span class="hl opt">);</span></li>
<li id="n_1384" class="hl">    <span class="hl kwb">$sth_accno </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></li>
<li id="n_1385" class="hl">        qq<span class="hl opt">|</span></li>
<li id="n_1386" class="hl">        UPDATE defaults</li>
<li id="n_1387" class="hl">                   SET value <span class="hl opt">= (</span>SELECT id</li>
<li id="n_1388" class="hl">                                               FROM chart</li>
<li id="n_1389" class="hl">                                              WHERE accno <span class="hl opt">= ?)</span></li>
<li id="n_1390" class="hl">         WHERE setting_key <span class="hl opt">= ?|</span></li>
<li id="n_1391" class="hl">    <span class="hl opt">);</span></li>
<li id="n_1392" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%translation </span><span class="hl opt">= (</span></li>
<li id="n_1393" class="hl">        inventory_accno_id <span class="hl opt">=&gt; </span><span class="hl sng">&#39;IC&#39;</span><span class="hl opt">,</span></li>
<li id="n_1394" class="hl">        income_accno_id    <span class="hl opt">=&gt; </span><span class="hl sng">&#39;IC_income&#39;</span><span class="hl opt">,</span></li>
<li id="n_1395" class="hl">        expense_accno_id   <span class="hl opt">=&gt; </span><span class="hl sng">&#39;IC_expense&#39;</span><span class="hl opt">,</span></li>
<li id="n_1396" class="hl">        fxgain_accno_id    <span class="hl opt">=&gt; </span><span class="hl sng">&#39;FX_gain&#39;</span><span class="hl opt">,</span></li>
<li id="n_1397" class="hl">        fxloss_accno_id    <span class="hl opt">=&gt; </span><span class="hl sng">&#39;FX_loss&#39;</span></li>
<li id="n_1398" class="hl">    <span class="hl opt">);</span></li>
<li id="n_1399" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span></li>
<li id="n_1400" class="hl">        <span class="hl sng">qw(inventory_accno_id income_accno_id expense_accno_id</span></li>
<li id="n_1401" class="hl"><span class="hl sng">        fxgain_accno_id fxloss_accno_id glnumber sinumber vinumber</span></li>
<li id="n_1402" class="hl"><span class="hl sng">        sonumber ponumber sqnumber rfqnumber partnumber employeenumber</span></li>
<li id="n_1403" class="hl"><span class="hl sng">        customernumber vendornumber projectnumber yearend curr</span></li>
<li id="n_1404" class="hl"><span class="hl sng">        weightunit businessnumber)</span></li>
<li id="n_1405" class="hl">      <span class="hl opt">)</span></li>
<li id="n_1406" class="hl">    <span class="hl opt">{</span></li>
<li id="n_1407" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$val </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_1408" class="hl"></li>
<li id="n_1409" 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">$_</span><span class="hl opt">} ) {</span></li>
<li id="n_1410" class="hl">            <span class="hl kwb">$val </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{ </span><span class="hl kwb">$translation</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">} };</span></li>
<li id="n_1411" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1412" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$_ </span><span class="hl opt">=~ </span><span class="hl kwd">/accno/ </span><span class="hl opt">) {</span></li>
<li id="n_1413" class="hl">            <span class="hl kwb">$sth_accno</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$val</span><span class="hl opt">, </span><span class="hl kwb">$_ </span><span class="hl opt">)</span></li>
<li id="n_1414" 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 sng">&quot;Saving </span><span class="hl ipl">$_</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_1415" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1416" class="hl">        <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_1417" class="hl">            <span class="hl kwb">$sth_plain</span><span class="hl opt">-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$val</span><span class="hl opt">, </span><span class="hl kwb">$_ </span><span class="hl opt">)</span></li>
<li id="n_1418" 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 sng">&quot;Saving </span><span class="hl ipl">$_</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_1419" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1420" class="hl"></li>
<li id="n_1421" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1422" 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_1423" class="hl"></li>
<li id="n_1424" class="hl">    <span class="hl kwb">$rc</span><span class="hl opt">;</span></li>
<li id="n_1425" class="hl"></li>
<li id="n_1426" class="hl"><span class="hl opt">}</span></li>
<li id="n_1427" class="hl"></li>
<li id="n_1428" class="hl"><span class="hl kwa">sub </span>defaultaccounts <span class="hl opt">{</span></li>
<li id="n_1429" class="hl"></li>
<li id="n_1430" 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_1431" class="hl"></li>
<li id="n_1432" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_1433" 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_1434" class="hl"></li>
<li id="n_1435" class="hl">    <span class="hl slc"># get defaults from defaults table</span></li>
<li id="n_1436" 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_1437" class="hl">        SELECT setting_key<span class="hl opt">, </span>value FROM defaults</li>
<li id="n_1438" class="hl">         WHERE setting_key LIKE <span class="hl opt">?|;</span></li>
<li id="n_1439" 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_1440" 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 sng">&#39;</span><span class="hl ipl">%accno_id</span><span class="hl sng">&#39;</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_1441" class="hl"></li>
<li id="n_1442" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_1443" 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_1444" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>setting_key<span class="hl opt">} } = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>value<span class="hl opt">};</span></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">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaults<span class="hl opt">}{</span>IC<span class="hl opt">}         = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>inventory_accno_id<span class="hl opt">};</span></li>
<li id="n_1448" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaults<span class="hl opt">}{</span>IC_income<span class="hl opt">}  = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>income_accno_id<span class="hl opt">};</span></li>
<li id="n_1449" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaults<span class="hl opt">}{</span>IC_sale<span class="hl opt">}    = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>income_accno_id<span class="hl opt">};</span></li>
<li id="n_1450" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaults<span class="hl opt">}{</span>IC_expense<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>expense_accno_id<span class="hl opt">};</span></li>
<li id="n_1451" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaults<span class="hl opt">}{</span>IC_cogs<span class="hl opt">}    = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>expense_accno_id<span class="hl opt">};</span></li>
<li id="n_1452" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaults<span class="hl opt">}{</span>FX_gain<span class="hl opt">}    = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>fxgain_accno_id<span class="hl opt">};</span></li>
<li id="n_1453" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>defaults<span class="hl opt">}{</span>FX_loss<span class="hl opt">}    = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>fxloss_accno_id<span class="hl opt">};</span></li>
<li id="n_1454" class="hl"></li>
<li id="n_1455" 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_1456" class="hl"></li>
<li id="n_1457" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1458" class="hl">        SELECT id<span class="hl opt">, </span>accno<span class="hl opt">, </span>description<span class="hl opt">, </span><span class="hl kwc">link</span></li>
<li id="n_1459" class="hl">          FROM chart</li>
<li id="n_1460" class="hl">         WHERE <span class="hl kwc">link </span>LIKE <span class="hl sng">&#39;</span><span class="hl ipl">%IC%</span><span class="hl sng">&#39;</span></li>
<li id="n_1461" class="hl">         ORDER BY accno<span class="hl opt">|;</span></li>
<li id="n_1462" class="hl"></li>
<li id="n_1463" 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_1464" 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_1465" class="hl"></li>
<li id="n_1466" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$nkey</span><span class="hl opt">;</span></li>
<li id="n_1467" 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_1468" class="hl">        <span class="hl kwa">foreach </span><span class="hl kwc">my </span><span class="hl kwb">$key </span><span class="hl opt">( </span><span class="hl kwc">split</span><span class="hl opt">( </span><span class="hl kwd">/:/</span><span class="hl opt">, </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span><span class="hl kwc">link</span><span class="hl opt">} ) ) {</span></li>
<li id="n_1469" class="hl">            <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$key </span><span class="hl opt">=~ </span><span class="hl kwd">/IC/ </span><span class="hl opt">) {</span></li>
<li id="n_1470" class="hl">                <span class="hl kwb">$nkey </span><span class="hl opt">= </span><span class="hl kwb">$key</span><span class="hl opt">;</span></li>
<li id="n_1471" class="hl"></li>
<li id="n_1472" class="hl">                <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$key </span><span class="hl opt">=~ </span><span class="hl kwd">/cogs/ </span><span class="hl opt">) {</span></li>
<li id="n_1473" class="hl">                    <span class="hl kwb">$nkey </span><span class="hl opt">= </span><span class="hl sng">&quot;IC_expense&quot;</span><span class="hl opt">;</span></li>
<li id="n_1474" class="hl">                <span class="hl opt">}</span></li>
<li id="n_1475" class="hl"></li>
<li id="n_1476" class="hl">                <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$key </span><span class="hl opt">=~ </span><span class="hl kwd">/sale/ </span><span class="hl opt">) {</span></li>
<li id="n_1477" class="hl">                    <span class="hl kwb">$nkey </span><span class="hl opt">= </span><span class="hl sng">&quot;IC_income&quot;</span><span class="hl opt">;</span></li>
<li id="n_1478" class="hl">                <span class="hl opt">}</span></li>
<li id="n_1479" class="hl"></li>
<li id="n_1480" class="hl">                <span class="hl opt">%{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">}{</span><span class="hl kwb">$nkey</span><span class="hl opt">}{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">} } } = (</span></li>
<li id="n_1481" class="hl">                    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_1482" class="hl">                    description <span class="hl opt">=&gt; </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">}</span></li>
<li id="n_1483" class="hl">                <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">    <span class="hl opt">}</span></li>
<li id="n_1487" class="hl"></li>
<li id="n_1488" 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_1489" class="hl"></li>
<li id="n_1490" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1491" class="hl">            SELECT id<span class="hl opt">, </span>accno<span class="hl opt">, </span>description</li>
<li id="n_1492" class="hl">              FROM chart</li>
<li id="n_1493" class="hl">             WHERE <span class="hl opt">(</span>category <span class="hl opt">= </span><span class="hl sng">&#39;I&#39;</span> OR category <span class="hl opt">= </span><span class="hl sng">&#39;E&#39;</span><span class="hl opt">)</span></li>
<li id="n_1494" class="hl">                   AND charttype <span class="hl opt">= </span><span class="hl sng">&#39;A&#39;</span></li>
<li id="n_1495" class="hl">          ORDER BY accno<span class="hl opt">|;</span></li>
<li id="n_1496" class="hl"></li>
<li id="n_1497" 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_1498" 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_1499" class="hl"></li>
<li id="n_1500" 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_1501" class="hl">        <span class="hl opt">%{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">}{</span>FX_gain<span class="hl opt">}{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">} } } = (</span></li>
<li id="n_1502" class="hl">            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_1503" class="hl">            description <span class="hl opt">=&gt; </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">}</span></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">        <span class="hl opt">%{ </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">}{</span>FX_loss<span class="hl opt">}{ </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>accno<span class="hl opt">} } } = (</span></li>
<li id="n_1507" class="hl">            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_1508" class="hl">            description <span class="hl opt">=&gt; </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">}</span></li>
<li id="n_1509" class="hl">        <span class="hl opt">);</span></li>
<li id="n_1510" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1511" class="hl"></li>
<li id="n_1512" 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_1513" class="hl"></li>
<li id="n_1514" 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_1515" class="hl"></li>
<li id="n_1516" class="hl"><span class="hl opt">}</span></li>
<li id="n_1517" class="hl"></li>
<li id="n_1518" class="hl"><span class="hl kwa">sub </span>taxes <span class="hl opt">{</span></li>
<li id="n_1519" class="hl"></li>
<li id="n_1520" 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_1521" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$taxaccounts </span><span class="hl opt">= </span><span class="hl sng">&#39;&#39;</span><span class="hl opt">;</span></li>
<li id="n_1522" class="hl"></li>
<li id="n_1523" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_1524" 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_1525" class="hl"></li>
<li id="n_1526" 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_1527" class="hl">          SELECT c<span class="hl opt">.</span>id<span class="hl opt">, </span>c<span class="hl opt">.</span>accno<span class="hl opt">, </span>c<span class="hl opt">.</span>description<span class="hl opt">, </span></li>
<li id="n_1528" class="hl">                 t<span class="hl opt">.</span>rate <span class="hl opt">* </span><span class="hl num">100 </span>AS rate<span class="hl opt">, </span>t<span class="hl opt">.</span>taxnumber<span class="hl opt">, </span>t<span class="hl opt">.</span>validto<span class="hl opt">,</span></li>
<li id="n_1529" class="hl">             t<span class="hl opt">.</span>pass<span class="hl opt">, </span>m<span class="hl opt">.</span>taxmodulename</li>
<li id="n_1530" class="hl">            FROM chart c</li>
<li id="n_1531" class="hl">            JOIN tax t ON <span class="hl opt">(</span>c<span class="hl opt">.</span>id <span class="hl opt">= </span>t<span class="hl opt">.</span>chart_id<span class="hl opt">)</span></li>
<li id="n_1532" class="hl">            JOIN taxmodule m ON <span class="hl opt">(</span>t<span class="hl opt">.</span>taxmodule_id <span class="hl opt">= </span>m<span class="hl opt">.</span>taxmodule_id<span class="hl opt">)</span></li>
<li id="n_1533" class="hl">        ORDER BY <span class="hl num">3</span><span class="hl opt">, </span><span class="hl num">6</span><span class="hl opt">|;</span></li>
<li id="n_1534" class="hl"></li>
<li id="n_1535" 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_1536" 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_1537" class="hl"></li>
<li id="n_1538" 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_1539" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">db_parse_numeric</span><span class="hl opt">(</span>sth<span class="hl opt">=&gt;</span><span class="hl kwb">$sth</span><span class="hl opt">, </span>hashref<span class="hl opt">=&gt;</span><span class="hl kwb">$ref</span><span class="hl opt">);</span></li>
<li id="n_1540" 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><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_1541" class="hl">        <span class="hl kwb">$taxaccounts </span><span class="hl opt">.= </span><span class="hl sng">&quot; &quot;</span> <span class="hl opt">. </span><span class="hl kwb">$ref</span><span class="hl opt">{</span>accno<span class="hl opt">};</span></li>
<li id="n_1542" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1543" class="hl"></li>
<li id="n_1544" 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_1545" class="hl"></li>
<li id="n_1546" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1547" class="hl">        SELECT taxmodule_id<span class="hl opt">, </span>taxmodulename FROM taxmodule</li>
<li id="n_1548" class="hl">        ORDER BY <span class="hl num">2</span><span class="hl opt">|;</span></li>
<li id="n_1549" class="hl"></li>
<li id="n_1550" 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_1551" 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_1552" class="hl"></li>
<li id="n_1553" 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_1554" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{ </span><span class="hl sng">&quot;taxmodule_&quot;</span> <span class="hl opt">. </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>taxmodule_id<span class="hl opt">} } = </span><span class="hl kwb">$ref</span><span class="hl opt">-&gt;{</span>taxmodulename<span class="hl opt">};</span></li>
<li id="n_1555" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1556" class="hl"></li>
<li id="n_1557" 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_1558" class="hl"></li>
<li id="n_1559" 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_1560" class="hl"></li>
<li id="n_1561" class="hl"><span class="hl opt">}</span></li>
<li id="n_1562" class="hl"></li>
<li id="n_1563" class="hl"><span class="hl kwa">sub </span>save_taxes <span class="hl opt">{</span></li>
<li id="n_1564" class="hl"></li>
<li id="n_1565" 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_1566" class="hl"></li>
<li id="n_1567" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_1568" 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_1569" class="hl"></li>
<li id="n_1570" 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 tax<span class="hl opt">|;</span></li>
<li id="n_1571" 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_1572" class="hl"></li>
<li id="n_1573" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1574" class="hl">        INSERT INTO tax <span class="hl opt">(</span>chart_id<span class="hl opt">, </span>rate<span class="hl opt">, </span>taxnumber<span class="hl opt">, </span>validto<span class="hl opt">, </span></li>
<li id="n_1575" class="hl">            pass<span class="hl opt">, </span>taxmodule_id<span class="hl opt">)</span></li>
<li id="n_1576" class="hl">            VALUES <span class="hl opt">(?, ?, ?, ?, ?, ?)|;</span></li>
<li id="n_1577" class="hl"></li>
<li id="n_1578" 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_1579" 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">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_1580" class="hl">        <span class="hl kwc">my </span><span class="hl opt">( </span><span class="hl kwb">$chart_id</span><span class="hl opt">, </span><span class="hl kwb">$i </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">$item</span><span class="hl opt">;</span></li>
<li id="n_1581" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$rate </span><span class="hl opt">=</span></li>
<li id="n_1582" 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;taxrate_</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_1583" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">$validto </span><span class="hl opt">= </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;validto_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_1584" class="hl">        <span class="hl kwb">$validto </span><span class="hl opt">= </span><span class="hl kwc">undef </span><span class="hl kwa">if </span><span class="hl kwc">not </span><span class="hl kwb">$validto</span><span class="hl opt">;</span></li>
<li id="n_1585" class="hl">        <span class="hl kwc">my </span><span class="hl kwb">&#64;queryargs </span><span class="hl opt">= (</span></li>
<li id="n_1586" class="hl">            <span class="hl kwb">$chart_id</span><span class="hl opt">, </span><span class="hl kwb">$rate</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;taxnumber_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">},</span></li>
<li id="n_1587" class="hl">            <span class="hl kwb">$validto</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;pass_</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;taxmodule_id_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">}</span></li>
<li id="n_1588" class="hl">        <span class="hl opt">);</span></li>
<li id="n_1589" class="hl"></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">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1591" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1592" class="hl"></li>
<li id="n_1593" 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_1594" class="hl"></li>
<li id="n_1595" class="hl">    <span class="hl kwb">$rc</span><span class="hl opt">;</span></li>
<li id="n_1596" class="hl"></li>
<li id="n_1597" class="hl"><span class="hl opt">}</span></li>
<li id="n_1598" class="hl"></li>
<li id="n_1599" class="hl"><span class="hl kwa">sub </span>backup <span class="hl opt">{</span></li>
<li id="n_1600" class="hl"></li>
<li id="n_1601" 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_1602" class="hl"></li>
<li id="n_1603" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$mail</span><span class="hl opt">;</span></li>
<li id="n_1604" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$err</span><span class="hl opt">;</span></li>
<li id="n_1605" class="hl"></li>
<li id="n_1606" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;t </span><span class="hl opt">= </span><span class="hl kwc">localtime</span><span class="hl opt">(</span><span class="hl kwc">time</span><span class="hl opt">);</span></li>
<li id="n_1607" class="hl">    <span class="hl kwb">$t</span><span class="hl opt">[</span><span class="hl num">4</span><span class="hl opt">]++;</span></li>
<li id="n_1608" class="hl">    <span class="hl kwb">$t</span><span class="hl opt">[</span><span class="hl num">5</span><span class="hl opt">] += </span><span class="hl num">1900</span><span class="hl opt">;</span></li>
<li id="n_1609" class="hl">    <span class="hl kwb">$t</span><span class="hl opt">[</span><span class="hl num">3</span><span class="hl opt">] = </span><span class="hl kwc">substr</span><span class="hl opt">( </span><span class="hl sng">&quot;0</span><span class="hl ipl">$t</span><span class="hl sng">[3]&quot;</span><span class="hl opt">, -</span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_1610" class="hl">    <span class="hl kwb">$t</span><span class="hl opt">[</span><span class="hl num">4</span><span class="hl opt">] = </span><span class="hl kwc">substr</span><span class="hl opt">( </span><span class="hl sng">&quot;0</span><span class="hl ipl">$t</span><span class="hl sng">[4]&quot;</span><span class="hl opt">, -</span><span class="hl num">2 </span><span class="hl opt">);</span></li>
<li id="n_1611" class="hl"></li>
<li id="n_1612" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$boundary </span><span class="hl opt">= </span><span class="hl kwc">time</span><span class="hl opt">;</span></li>
<li id="n_1613" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$tmpfile </span><span class="hl opt">=</span></li>
<li id="n_1614" class="hl"><span class="hl sng">&quot;${LedgerSMB::Sysconfig::backuppath}/</span><span class="hl ipl">$boundary</span><span class="hl sng">.</span><span class="hl ipl">$globalDBname</span><span class="hl sng">-</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{dbversion}-</span><span class="hl ipl">$t</span><span class="hl sng">[5]</span><span class="hl ipl">$t</span><span class="hl sng">[4]</span><span class="hl ipl">$t</span><span class="hl sng">[3].sql&quot;</span><span class="hl opt">;</span></li>
<li id="n_1615" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>OUT<span class="hl opt">} = </span><span class="hl sng">&quot;</span><span class="hl ipl">$tmpfile</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_1616" class="hl"></li>
<li id="n_1617" class="hl">    <span class="hl kwc">open</span><span class="hl opt">( </span>OUT<span class="hl opt">, </span><span class="hl sng">&#39;&gt;&#39;</span><span class="hl opt">, </span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{OUT}&quot;</span> <span class="hl opt">) </span><span class="hl kwc">or </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">error</span><span class="hl opt">(</span><span class="hl sng">&quot;</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{OUT} : </span><span class="hl ipl">$!</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_1618" class="hl"></li>
<li id="n_1619" class="hl">    <span class="hl slc"># get sequences, functions and triggers</span></li>
<li id="n_1620" class="hl"></li>
<li id="n_1621" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$today </span><span class="hl opt">= </span><span class="hl kwc">scalar localtime</span><span class="hl opt">;</span></li>
<li id="n_1622" class="hl"></li>
<li id="n_1623" class="hl">    <span class="hl slc"># compress backup if gzip defined</span></li>
<li id="n_1624" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$suffix </span><span class="hl opt">= </span><span class="hl sng">&quot;c&quot;</span><span class="hl opt">;</span></li>
<li id="n_1625" class="hl"></li>
<li id="n_1626" 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>media<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;email&#39;</span> <span class="hl opt">) {</span></li>
<li id="n_1627" class="hl">        <span class="hl kwc">print </span>OUT</li>
<li id="n_1628" class="hl"><span class="hl sng">qx(PGPASSWORD=&quot;</span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbpasswd}&quot; pg_dump -U </span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbuser} -h </span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbhost} -Fc -p </span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbport} </span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbname})</span><span class="hl opt">;</span></li>
<li id="n_1629" class="hl">        <span class="hl kwc">close </span>OUT<span class="hl opt">;</span></li>
<li id="n_1630" class="hl">        <span class="hl kwa">use </span>LedgerSMB<span class="hl opt">::</span>Mailer<span class="hl opt">;</span></li>
<li id="n_1631" class="hl">        <span class="hl kwb">$mail </span><span class="hl opt">= </span>new Mailer<span class="hl opt">;</span></li>
<li id="n_1632" class="hl"></li>
<li id="n_1633" class="hl">        <span class="hl kwb">$mail</span><span class="hl opt">-&gt;{</span>to<span class="hl opt">}   = </span>qq<span class="hl opt">|</span><span class="hl sng">&quot;</span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{name}&quot;</span> <span class="hl opt">&lt;</span><span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;{</span>email<span class="hl opt">}&gt;|;</span></li>
<li id="n_1634" class="hl">        <span class="hl kwb">$mail</span><span class="hl opt">-&gt;{</span>from<span class="hl opt">} = </span>qq<span class="hl opt">|</span><span class="hl sng">&quot;</span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{name}&quot;</span> <span class="hl opt">&lt;</span><span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;{</span>email<span class="hl opt">}&gt;|;</span></li>
<li id="n_1635" class="hl">        <span class="hl kwb">$mail</span><span class="hl opt">-&gt;{</span>subject<span class="hl opt">} =</span></li>
<li id="n_1636" class="hl"><span class="hl sng">&quot;LedgerSMB Backup / </span><span class="hl ipl">$globalDBname</span><span class="hl sng">-</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{dbversion}-</span><span class="hl ipl">$t</span><span class="hl sng">[5]</span><span class="hl ipl">$t</span><span class="hl sng">[4]</span><span class="hl ipl">$t</span><span class="hl sng">[3].sql</span><span class="hl ipl">$suffix</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_1637" class="hl">        <span class="hl opt">&#64;{ </span><span class="hl kwb">$mail</span><span class="hl opt">-&gt;{</span>attachments<span class="hl opt">} } = (</span><span class="hl kwb">$tmpfile</span><span class="hl opt">);</span></li>
<li id="n_1638" class="hl">        <span class="hl kwb">$mail</span><span class="hl opt">-&gt;{</span>version<span class="hl opt">} = </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>version<span class="hl opt">};</span></li>
<li id="n_1639" class="hl">        <span class="hl kwb">$mail</span><span class="hl opt">-&gt;{</span>fileid<span class="hl opt">}  = </span><span class="hl sng">&quot;</span><span class="hl ipl">$boundary</span><span class="hl sng">.&quot;</span><span class="hl opt">;</span></li>
<li id="n_1640" class="hl">        <span class="hl kwb">$mail</span><span class="hl opt">-&gt;{</span>format<span class="hl opt">}  = </span><span class="hl sng">&quot;plain&quot;</span><span class="hl opt">;</span></li>
<li id="n_1641" class="hl">        <span class="hl kwb">$mail</span><span class="hl opt">-&gt;{</span>format<span class="hl opt">}  = </span><span class="hl sng">&quot;octet-stream&quot;</span><span class="hl opt">;</span></li>
<li id="n_1642" class="hl"></li>
<li id="n_1643" class="hl">        <span class="hl kwb">$myconfig</span><span class="hl opt">-&gt;{</span>signature<span class="hl opt">} =~ </span><span class="hl kwd">s/\\n/\n/g</span><span class="hl opt">;</span></li>
<li id="n_1644" class="hl">        <span class="hl kwb">$mail</span><span class="hl opt">-&gt;{</span>message<span class="hl opt">} = </span><span class="hl sng">&quot;-- </span><span class="hl esc">\n</span><span class="hl sng"></span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{signature}&quot;</span><span class="hl opt">;</span></li>
<li id="n_1645" class="hl"></li>
<li id="n_1646" class="hl">        <span class="hl kwb">$err </span><span class="hl opt">= </span><span class="hl kwb">$mail</span><span class="hl opt">-&gt;</span><span class="hl kwc">send</span><span class="hl opt">;</span></li>
<li id="n_1647" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1648" class="hl"></li>
<li id="n_1649" 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>media<span class="hl opt">} </span><span class="hl kwc">eq </span><span class="hl sng">&#39;file&#39;</span> <span class="hl opt">) {</span></li>
<li id="n_1650" class="hl"></li>
<li id="n_1651" class="hl">        <span class="hl kwc">open</span><span class="hl opt">( </span>IN<span class="hl opt">, </span><span class="hl sng">&#39;&lt;&#39;</span><span class="hl opt">, </span><span class="hl sng">&quot;</span><span class="hl ipl">$tmpfile</span><span class="hl sng">&quot;</span> <span class="hl opt">) </span><span class="hl kwc">or </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">error</span><span class="hl opt">(</span><span class="hl sng">&quot;</span><span class="hl ipl">$tmpfile </span><span class="hl sng">: </span><span class="hl ipl">$!</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_1652" class="hl">        <span class="hl kwc">open</span><span class="hl opt">( </span>OUT<span class="hl opt">, </span><span class="hl sng">&quot;&gt;-&quot;</span> <span class="hl opt">) </span><span class="hl kwc">or </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">error</span><span class="hl opt">(</span><span class="hl sng">&quot;STDOUT : </span><span class="hl ipl">$!</span><span class="hl sng">&quot;</span><span class="hl opt">);</span></li>
<li id="n_1653" class="hl"></li>
<li id="n_1654" class="hl">        <span class="hl kwc">print </span>OUT qq<span class="hl opt">|</span>Content-Type<span class="hl opt">: </span>application<span class="hl opt">/</span>file<span class="hl opt">;</span><span class="hl esc">\n</span><span class="hl opt">|</span></li>
<li id="n_1655" class="hl">          <span class="hl opt">. </span>qq<span class="hl opt">|</span>Content-Disposition<span class="hl opt">: </span>attachment<span class="hl opt">; </span>filename<span class="hl opt">=</span><span class="hl sng">&quot;</span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbname}-</span><span class="hl ipl">$form</span><span class="hl sng">-&gt;{dbversion}-</span><span class="hl ipl">$t</span><span class="hl sng">[5]</span><span class="hl ipl">$t</span><span class="hl sng">[4]</span><span class="hl ipl">$t</span><span class="hl sng">[3].sql</span><span class="hl ipl">$suffix</span><span class="hl sng">&quot;</span><span class="hl esc">\n\n</span><span class="hl opt">|;</span></li>
<li id="n_1656" class="hl">        <span class="hl kwc">print </span>OUT</li>
<li id="n_1657" class="hl"><span class="hl sng">qx(PGPASSWORD=&quot;</span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbpasswd}&quot; pg_dump -U </span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbuser} -h </span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbhost} -Fc -p </span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbport} </span><span class="hl ipl">$myconfig</span><span class="hl sng">-&gt;{dbname})</span><span class="hl opt">;</span></li>
<li id="n_1658" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1659" class="hl"></li>
<li id="n_1660" class="hl">    <span class="hl kwc">unlink </span><span class="hl sng">&quot;</span><span class="hl ipl">$tmpfile</span><span class="hl sng">&quot;</span><span class="hl opt">;</span></li>
<li id="n_1661" class="hl"></li>
<li id="n_1662" class="hl"><span class="hl opt">}</span></li>
<li id="n_1663" class="hl"></li>
<li id="n_1664" class="hl"><span class="hl kwa">sub </span>closedto <span class="hl opt">{</span></li>
<li id="n_1665" 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_1666" class="hl"></li>
<li id="n_1667" 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_1668" class="hl"></li>
<li id="n_1669" 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_1670" class="hl">        SELECT <span class="hl opt">(</span>SELECT value FROM defaults </li>
<li id="n_1671" class="hl">                 WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;closedto&#39;</span><span class="hl opt">), </span></li>
<li id="n_1672" class="hl">               <span class="hl opt">(</span>SELECT value FROM defaults</li>
<li id="n_1673" class="hl">                 WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;revtrans&#39;</span><span class="hl opt">), </span></li>
<li id="n_1674" class="hl">               <span class="hl opt">(</span>SELECT value FROM defaults</li>
<li id="n_1675" class="hl">                 WHERE setting_key <span class="hl opt">= </span><span class="hl sng">&#39;audittrail&#39;</span><span class="hl opt">)|;</span></li>
<li id="n_1676" class="hl"></li>
<li id="n_1677" class="hl">    <span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>closedto<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>revtrans<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>audittrail<span class="hl opt">} ) =</span></li>
<li id="n_1678" class="hl">      <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_1679" class="hl"></li>
<li id="n_1680" 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_1681" class="hl"></li>
<li id="n_1682" class="hl"><span class="hl opt">}</span></li>
<li id="n_1683" class="hl"></li>
<li id="n_1684" class="hl"><span class="hl kwa">sub </span>closebooks <span class="hl opt">{</span></li>
<li id="n_1685" class="hl"></li>
<li id="n_1686" 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_1687" class="hl"></li>
<li id="n_1688" 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_1689" 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_1690" class="hl">        UPDATE defaults SET value <span class="hl opt">= ? </span></li>
<li id="n_1691" class="hl">         WHERE setting_key <span class="hl opt">= ?|;</span></li>
<li id="n_1692" 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_1693" class="hl">    <span class="hl kwa">for </span><span class="hl opt">(</span><span class="hl sng">qw(revtrans closedto audittrail)</span><span class="hl opt">) {</span></li>
<li id="n_1694" class="hl"></li>
<li id="n_1695" class="hl">        <span class="hl kwa">if </span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} ) {</span></li>
<li id="n_1696" class="hl">            <span class="hl kwb">$val </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_1697" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1698" class="hl">        <span class="hl kwa">else </span><span class="hl opt">{</span></li>
<li id="n_1699" class="hl">            <span class="hl kwb">$val </span><span class="hl opt">= </span><span class="hl num">0</span><span class="hl opt">;</span></li>
<li id="n_1700" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1701" 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">$val</span><span class="hl opt">, </span><span class="hl kwb">$_ </span><span class="hl opt">);</span></li>
<li id="n_1702" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1703" class="hl"></li>
<li id="n_1704" 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>removeaudittrail<span class="hl opt">} ) {</span></li>
<li id="n_1705" class="hl">        <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1706" class="hl">            DELETE FROM audittrail</li>
<li id="n_1707" class="hl">             WHERE transdate <span class="hl opt">&lt; | . </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>removeaudittrail<span class="hl opt">} );</span></li>
<li id="n_1708" class="hl"></li>
<li id="n_1709" 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_1710" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1711" class="hl"></li>
<li id="n_1712" 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_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"><span class="hl kwa">sub </span>earningsaccounts <span class="hl opt">{</span></li>
<li id="n_1717" class="hl"></li>
<li id="n_1718" 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_1719" class="hl"></li>
<li id="n_1720" class="hl">    <span class="hl kwc">my </span><span class="hl opt">( </span><span class="hl kwb">$query</span><span class="hl opt">, </span><span class="hl kwb">$sth</span><span class="hl opt">, </span><span class="hl kwb">$ref </span><span class="hl opt">);</span></li>
<li id="n_1721" class="hl"></li>
<li id="n_1722" class="hl">    <span class="hl slc"># connect to database</span></li>
<li id="n_1723" 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_1724" class="hl"></li>
<li id="n_1725" class="hl">    <span class="hl slc"># get chart of accounts</span></li>
<li id="n_1726" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1727" class="hl">            SELECT accno<span class="hl opt">,</span>description</li>
<li id="n_1728" class="hl">              FROM chart</li>
<li id="n_1729" class="hl">             WHERE charttype <span class="hl opt">= </span><span class="hl sng">&#39;A&#39;</span></li>
<li id="n_1730" class="hl">                   AND category <span class="hl opt">= </span><span class="hl sng">&#39;Q&#39;</span></li>
<li id="n_1731" class="hl">          ORDER BY accno<span class="hl opt">|;</span></li>
<li id="n_1732" class="hl"></li>
<li id="n_1733" 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_1734" 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_1735" class="hl">    <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>chart<span class="hl opt">} = </span><span class="hl sng">&quot;&quot;</span><span class="hl opt">;</span></li>
<li id="n_1736" class="hl"></li>
<li id="n_1737" 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_1738" 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>chart<span class="hl opt">} }, </span><span class="hl kwb">$ref</span><span class="hl opt">;</span></li>
<li id="n_1739" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1740" class="hl"></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">    <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_1743" class="hl"><span class="hl opt">}</span></li>
<li id="n_1744" class="hl"></li>
<li id="n_1745" class="hl"><span class="hl kwa">sub </span>post_yearend <span class="hl opt">{</span></li>
<li id="n_1746" class="hl"></li>
<li id="n_1747" 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_1748" class="hl"></li>
<li id="n_1749" class="hl">    <span class="hl slc"># connect to database, turn off AutoCommit</span></li>
<li id="n_1750" 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_1751" class="hl"></li>
<li id="n_1752" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$query</span><span class="hl opt">;</span></li>
<li id="n_1753" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">;</span></li>
<li id="n_1754" 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_1755" 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_1756" class="hl"></li>
<li id="n_1757" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1758" class="hl">        INSERT INTO gl <span class="hl opt">(</span>reference<span class="hl opt">, </span>employee_id<span class="hl opt">)</span></li>
<li id="n_1759" class="hl">             VALUES <span class="hl opt">(?, (</span>SELECT id FROM employee</li>
<li id="n_1760" class="hl">                          WHERE login <span class="hl opt">= ?))|;</span></li>
<li id="n_1761" class="hl"></li>
<li id="n_1762" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$uid</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>login<span class="hl opt">} )</span></li>
<li id="n_1763" 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_1764" class="hl"></li>
<li id="n_1765" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1766" class="hl">        SELECT id </li>
<li id="n_1767" class="hl">          FROM gl</li>
<li id="n_1768" class="hl">         WHERE reference <span class="hl opt">= ?|;</span></li>
<li id="n_1769" class="hl"></li>
<li id="n_1770" 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_1771" 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">$uid</span><span class="hl opt">);</span></li>
<li id="n_1772" 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_1773" class="hl"></li>
<li id="n_1774" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1775" class="hl">        UPDATE gl </li>
<li id="n_1776" class="hl">           SET reference <span class="hl opt">= ?,</span></li>
<li id="n_1777" class="hl">               description <span class="hl opt">= ?,</span></li>
<li id="n_1778" class="hl">               notes <span class="hl opt">= ?,</span></li>
<li id="n_1779" class="hl">               transdate <span class="hl opt">= ?,</span></li>
<li id="n_1780" class="hl">               department_id <span class="hl opt">= </span><span class="hl num">0</span></li>
<li id="n_1781" class="hl">         WHERE id <span class="hl opt">= ?|;</span></li>
<li id="n_1782" class="hl"></li>
<li id="n_1783" class="hl">    <span class="hl kwb">&#64;queryargs </span><span class="hl opt">= (</span></li>
<li id="n_1784" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>reference<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>description<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>notes<span class="hl opt">},</span></li>
<li id="n_1785" 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>id<span class="hl opt">}</span></li>
<li id="n_1786" class="hl">    <span class="hl opt">);</span></li>
<li id="n_1787" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;queryargs</span><span class="hl opt">) || </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;</span><span class="hl kwd">dberror</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">);</span></li>
<li id="n_1788" class="hl"></li>
<li id="n_1789" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$amount</span><span class="hl opt">;</span></li>
<li id="n_1790" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$accno</span><span class="hl opt">;</span></li>
<li id="n_1791" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1792" class="hl">        INSERT INTO acc_trans <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_1793" class="hl">                    source<span class="hl opt">)</span></li>
<li id="n_1794" class="hl">             VALUES <span class="hl opt">(?, (</span>SELECT id</li>
<li id="n_1795" class="hl">                           FROM chart</li>
<li id="n_1796" class="hl">                          WHERE accno <span class="hl opt">= ?),</span></li>
<li id="n_1797" class="hl">                    <span class="hl opt">?, ?, ?)|;</span></li>
<li id="n_1798" class="hl"></li>
<li id="n_1799" class="hl">    <span class="hl slc"># insert acc_trans transactions</span></li>
<li id="n_1800" class="hl">    <span class="hl kwa">for </span><span class="hl kwc">my </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_1801" class="hl"></li>
<li id="n_1802" class="hl">        <span class="hl slc"># extract accno</span></li>
<li id="n_1803" class="hl">        <span class="hl opt">(</span><span class="hl kwb">$accno</span><span class="hl opt">) = </span><span class="hl kwc">split</span><span class="hl opt">( </span><span class="hl kwd">/--/</span><span class="hl opt">, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl sng">&quot;accno_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} );</span></li>
<li id="n_1804" 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_1805" class="hl"></li>
<li id="n_1806" 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;credit_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} ) {</span></li>
<li id="n_1807" 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;credit_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">};</span></li>
<li id="n_1808" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1809" class="hl"></li>
<li id="n_1810" 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;debit_</span><span class="hl ipl">$i</span><span class="hl sng">&quot;</span><span class="hl opt">} ) {</span></li>
<li id="n_1811" 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;debit_</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_1812" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1813" class="hl"></li>
<li id="n_1814" class="hl">        <span class="hl slc"># if there is an amount, add the record</span></li>
<li id="n_1815" 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_1816" class="hl">            <span class="hl kwc">my </span><span class="hl kwb">&#64;args </span><span class="hl opt">= (</span></li>
<li id="n_1817" 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><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">},</span></li>
<li id="n_1818" class="hl">                <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>reference<span class="hl opt">}</span></li>
<li id="n_1819" class="hl">            <span class="hl opt">);</span></li>
<li id="n_1820" class="hl"></li>
<li id="n_1821" class="hl">            <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">(</span><span class="hl kwb">&#64;args</span><span class="hl opt">)</span></li>
<li id="n_1822" 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_1823" class="hl">        <span class="hl opt">}</span></li>
<li id="n_1824" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1825" class="hl"></li>
<li id="n_1826" class="hl">    <span class="hl kwb">$query </span><span class="hl opt">= </span>qq<span class="hl opt">|</span></li>
<li id="n_1827" class="hl">        INSERT INTO yearend <span class="hl opt">(</span>trans_id<span class="hl opt">, </span>transdate<span class="hl opt">)</span></li>
<li id="n_1828" class="hl">             VALUES <span class="hl opt">(?, ?)|;</span></li>
<li id="n_1829" class="hl"></li>
<li id="n_1830" class="hl">    <span class="hl kwb">$dbh</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepare</span><span class="hl opt">(</span><span class="hl kwb">$query</span><span class="hl opt">)-&gt;</span><span class="hl kwd">execute</span><span class="hl opt">( </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>id<span class="hl opt">}, </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>transdate<span class="hl opt">} )</span></li>
<li id="n_1831" 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_1832" class="hl"></li>
<li id="n_1833" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">%audittrail </span><span class="hl opt">= (</span></li>
<li id="n_1834" class="hl">        tablename <span class="hl opt">=&gt; </span><span class="hl sng">&#39;gl&#39;</span><span class="hl opt">,</span></li>
<li id="n_1835" class="hl">        reference <span class="hl opt">=&gt; </span><span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span>reference<span class="hl opt">},</span></li>
<li id="n_1836" class="hl">        formname  <span class="hl opt">=&gt; </span><span class="hl sng">&#39;yearend&#39;</span><span class="hl opt">,</span></li>
<li id="n_1837" 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_1838" 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_1839" class="hl">    <span class="hl opt">);</span></li>
<li id="n_1840" class="hl"></li>
<li id="n_1841" 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_1842" class="hl"></li>
<li id="n_1843" class="hl">    <span class="hl slc"># commit and redirect</span></li>
<li id="n_1844" 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_1845" class="hl"></li>
<li id="n_1846" class="hl">    <span class="hl kwb">$rc</span><span class="hl opt">;</span></li>
<li id="n_1847" class="hl"></li>
<li id="n_1848" class="hl"><span class="hl opt">}</span></li>
<li id="n_1849" class="hl"></li>
<li id="n_1850" class="hl"><span class="hl kwa">sub </span>get_all_defaults <span class="hl opt">{</span></li>
<li id="n_1851" 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">$form </span><span class="hl opt">) = </span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span></li>
<li id="n_1852" 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_1853" class="hl">    <span class="hl kwc">my </span><span class="hl kwb">$query </span><span class="hl opt">= </span><span class="hl sng">&quot;select setting_key, value FROM defaults&quot;</span><span class="hl opt">;</span></li>
<li id="n_1854" 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_1855" 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_1856" class="hl">    <span class="hl kwa">while </span><span class="hl opt">( ( </span><span class="hl kwb">$skey</span><span class="hl opt">, </span><span class="hl kwb">$value </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_1857" class="hl">        <span class="hl kwb">$form</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$skey</span><span class="hl opt">} = </span><span class="hl kwb">$value</span><span class="hl opt">;</span></li>
<li id="n_1858" class="hl">    <span class="hl opt">}</span></li>
<li id="n_1859" class="hl"></li>
<li id="n_1860" class="hl">    <span class="hl kwb">$self</span><span class="hl opt">-&gt;</span><span class="hl kwd">defaultaccounts</span><span class="hl opt">( </span><span class="hl kwc">undef</span><span class="hl opt">, </span><span class="hl kwb">$form </span><span class="hl opt">);</span></li>
<li id="n_1861" 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_1862" class="hl"><span class="hl opt">}</span></li>
<li id="n_1863" class="hl"></li>
<li id="n_1864" class="hl"><span class="hl num">1</span><span class="hl opt">;</span></li>
</ol></code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.46.0</a>) at 2025-05-29 19:16:14 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
