<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>https://wiki.freenetis.org/index.php?action=history&amp;feed=atom&amp;title=Lbilling-synchronization.pl</id>
		<title>Lbilling-synchronization.pl - Historie editací</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.freenetis.org/index.php?action=history&amp;feed=atom&amp;title=Lbilling-synchronization.pl"/>
		<link rel="alternate" type="text/html" href="https://wiki.freenetis.org/index.php?title=Lbilling-synchronization.pl&amp;action=history"/>
		<updated>2026-05-07T10:32:44Z</updated>
		<subtitle>Historie editací této stránky</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.freenetis.org/index.php?title=Lbilling-synchronization.pl&amp;diff=1575&amp;oldid=prev</id>
		<title>Dzolo v 22. 8. 2012, 10:03</title>
		<link rel="alternate" type="text/html" href="https://wiki.freenetis.org/index.php?title=Lbilling-synchronization.pl&amp;diff=1575&amp;oldid=prev"/>
				<updated>2012-08-22T10:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Verze z 22. 8. 2012, 10:03&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Řádek 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/perl&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/ins&gt;#!/usr/bin/perl&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; # ***************************************************************************&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; # ***************************************************************************&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; # *&amp;#160;  Copyright (C) 2005 by Dominik Strnad&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; *&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; # *&amp;#160;  Copyright (C) 2005 by Dominik Strnad&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; *&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dzolo</name></author>	</entry>

	<entry>
		<id>https://wiki.freenetis.org/index.php?title=Lbilling-synchronization.pl&amp;diff=1574&amp;oldid=prev</id>
		<title>Dzolo: Založena nová stránka: #!/usr/bin/perl  # ***************************************************************************  # *   Copyright (C) 2005 by Dominik Strnad                                  ...</title>
		<link rel="alternate" type="text/html" href="https://wiki.freenetis.org/index.php?title=Lbilling-synchronization.pl&amp;diff=1574&amp;oldid=prev"/>
				<updated>2012-08-22T10:03:27Z</updated>
		
		<summary type="html">&lt;p&gt;Založena nová stránka: #!/usr/bin/perl  # ***************************************************************************  # *   Copyright (C) 2005 by Dominik Strnad                                  ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;#!/usr/bin/perl&lt;br /&gt;
 # ***************************************************************************&lt;br /&gt;
 # *   Copyright (C) 2005 by Dominik Strnad                                  *&lt;br /&gt;
 # *   dominik.strnad@unhfree.net                                            *&lt;br /&gt;
 # *                                                                         *&lt;br /&gt;
 # *   This program is free software; you can redistribute it and/or modify  *&lt;br /&gt;
 # *   it under the terms of the GNU General Public License as published by  *&lt;br /&gt;
 # *   the Free Software Foundation; either version 2 of the License, or     *&lt;br /&gt;
 # *   (at your option) any later version.                                   *&lt;br /&gt;
 # *                                                                         *&lt;br /&gt;
 # *   This program is distributed in the hope that it will be useful,       *&lt;br /&gt;
 # *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *&lt;br /&gt;
 # *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *&lt;br /&gt;
 # *   GNU General Public License for more details.                          *&lt;br /&gt;
 # *                                                                         *&lt;br /&gt;
 # *   You should have received a copy of the GNU General Public License     *&lt;br /&gt;
 # *   along with this program; if not, write to the                         *&lt;br /&gt;
 # *   Free Software Foundation, Inc.,                                       *&lt;br /&gt;
 # *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *&lt;br /&gt;
 # ***************************************************************************&lt;br /&gt;
 use strict;&lt;br /&gt;
 use DBI;&lt;br /&gt;
 use Getopt::Std;&lt;br /&gt;
 use Cz::Cstocs;&lt;br /&gt;
 use Data::Dumper;&lt;br /&gt;
 use warnings;&lt;br /&gt;
 #use MIME::Lite::TT::HTML; &lt;br /&gt;
 &lt;br /&gt;
 use vars qw( %opts $query $db $db_host $db_user $db_pass $file_lock $log_file $lbilling $dbh $czech_to_ascii $email_alert);&lt;br /&gt;
 &lt;br /&gt;
 ######### Configuration ########################################################&lt;br /&gt;
 &lt;br /&gt;
 ## alert on error by email?&lt;br /&gt;
 $email_alert = 1;&lt;br /&gt;
 ## email configuration&lt;br /&gt;
 $email_smtp = 'smtp.slfree.czf';&lt;br /&gt;
 $email_address_from = 'no-reply@freenetis.org';&lt;br /&gt;
 $email_address_to = 'monitoring@yourfreenet.net';&lt;br /&gt;
 ## database configuration&lt;br /&gt;
 $db = &amp;quot;lbilling&amp;quot;;&lt;br /&gt;
 $db_host = &amp;quot;localhost&amp;quot;;&lt;br /&gt;
 $db_user = &amp;quot;lbilling&amp;quot;;&lt;br /&gt;
 $db_pass = &amp;quot;&amp;quot;;&lt;br /&gt;
 ## setting to NFX&lt;br /&gt;
 $nfx_username = &amp;quot;&amp;quot;;&lt;br /&gt;
 $nfx_password = &amp;quot;&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 ################################################################################&lt;br /&gt;
 &lt;br /&gt;
 $file_lock = 1;&lt;br /&gt;
 $log_file = &amp;quot;&amp;gt;&amp;gt;/var/log/lbilling.log&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 unless ( $dbh = DBI-&amp;gt;connect(&amp;quot;DBI:mysql:database=$db;host=$db_host&amp;quot;, $db_user, $db_pass, {RaiseError =&amp;gt; 1}) ) {&lt;br /&gt;
    &amp;amp;logging(&amp;quot;Can't connect to database&amp;quot;);&lt;br /&gt;
    if ( $email_alert == 1 ){&lt;br /&gt;
      &amp;amp;send_email(&amp;quot;Can't connect to database&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    die;&lt;br /&gt;
 }&lt;br /&gt;
 unless ( $dbh-&amp;gt;do(&amp;quot;SET NAMES 'utf8'&amp;quot;) ) {&lt;br /&gt;
    &amp;amp;logging(&amp;quot;Can't set codepage&amp;quot;);&lt;br /&gt;
    if ( $email_alert == 1 ){&lt;br /&gt;
      &amp;amp;send_email(&amp;quot;Can't set codepage&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    die;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 $czech_to_ascii = new Cz::Cstocs 'utf8', 'ascii';&lt;br /&gt;
 &lt;br /&gt;
 #opts:&lt;br /&gt;
 # -s - synchronize - accounts and subscribers will be synchronized&lt;br /&gt;
 # -p - payments - payments will be synchronized&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;getopts( &amp;quot;sp&amp;quot;, \%opts );&lt;br /&gt;
 &lt;br /&gt;
 use SOAP::Lite +autodispatch =&amp;gt;&lt;br /&gt;
    uri =&amp;gt; &amp;quot;http://sip.nfx.czf/lBilling&amp;quot;,&lt;br /&gt;
    proxy =&amp;gt; &amp;quot;https://$nfx_username:$nfx_password\@sip.nfx.czf/cgi-bin/admin/lbilling/soap.pl&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 $lbilling = lBilling-&amp;gt;new();&lt;br /&gt;
 &lt;br /&gt;
 unless ( $lbilling ) {&lt;br /&gt;
   print &amp;quot;Could not create SOAP instance\n&amp;quot;;&lt;br /&gt;
   if ( $email_alert == 1 ){&lt;br /&gt;
      &amp;amp;send_email(&amp;quot;Could not create SOAP instance&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
   exit 1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 if ( exists( $opts{&amp;quot;s&amp;quot;} ) and $opts{&amp;quot;s&amp;quot;} ) {&lt;br /&gt;
    &amp;amp;synchronize_all();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if ( exists( $opts{&amp;quot;p&amp;quot;} ) and $opts{&amp;quot;p&amp;quot;} ) {&lt;br /&gt;
    &amp;amp;update_payments();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # -------------------------------------------------------------------------&lt;br /&gt;
 #synchronize account and subscribers&lt;br /&gt;
 sub synchronize_all {&lt;br /&gt;
   my ( $sth1, $sth2, $user, $link, $result, $all, $descr );&lt;br /&gt;
 &lt;br /&gt;
    $all = [];&lt;br /&gt;
 &lt;br /&gt;
    unless( $sth1 = $dbh-&amp;gt;prepare(&amp;quot;SELECT * FROM voip_lbilling_users&amp;quot;) ) {&lt;br /&gt;
        &amp;amp;logging(&amp;quot;Can't prepare statement SELECT * FROM voip_lbilling_users &amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
        if ( $email_alert == 1 ){&lt;br /&gt;
           &amp;amp;send_email(&amp;quot;Can't prepare statement SELECT * FROM voip_lbilling_users &amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
        }&lt;br /&gt;
        die;&lt;br /&gt;
    }&lt;br /&gt;
    unless ( $sth1-&amp;gt;execute ) {&lt;br /&gt;
        &amp;amp;logging(&amp;quot;Can't execute statement SELECT * FROM voip_lbilling_users&amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
        if ( $email_alert == 1 ){&lt;br /&gt;
           &amp;amp;send_email(&amp;quot;Can't execute statement SELECT * FROM voip_lbilling_users&amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
        }&lt;br /&gt;
        die;&lt;br /&gt;
    }&lt;br /&gt;
    while ( $user = $sth1-&amp;gt;fetchrow_hashref ) {&lt;br /&gt;
        $descr = &amp;amp;$czech_to_ascii($user-&amp;gt;{&amp;quot;descr&amp;quot;});&lt;br /&gt;
        $descr =~ s/[^\-\.\_\w ]/ /isg;&lt;br /&gt;
        $descr = substr($descr,0,255);&lt;br /&gt;
        &lt;br /&gt;
        my $member = { &amp;quot;billingid&amp;quot; =&amp;gt; $user-&amp;gt;{&amp;quot;id&amp;quot;},&lt;br /&gt;
                        &amp;quot;currency&amp;quot; =&amp;gt; $user-&amp;gt;{&amp;quot;currency&amp;quot;},&lt;br /&gt;
                        &amp;quot;type&amp;quot; =&amp;gt; $user-&amp;gt;{&amp;quot;type&amp;quot;},&lt;br /&gt;
                        &amp;quot;state&amp;quot; =&amp;gt; $user-&amp;gt;{&amp;quot;state&amp;quot;},&lt;br /&gt;
                        &amp;quot;limit&amp;quot; =&amp;gt; $user-&amp;gt;{&amp;quot;limit&amp;quot;},&lt;br /&gt;
                        &amp;quot;descr&amp;quot; =&amp;gt; $descr,&lt;br /&gt;
                        &amp;quot;subscribers&amp;quot; =&amp;gt; []&lt;br /&gt;
                      };&lt;br /&gt;
 &lt;br /&gt;
        unless( $sth2 = $dbh-&amp;gt;prepare(&amp;quot;SELECT * FROM voip_lbilling_accounts WHERE userid = &amp;quot;.$user-&amp;gt;{&amp;quot;id&amp;quot;}.&amp;quot; ORDER BY id&amp;quot; ) ) {&lt;br /&gt;
            &amp;amp;logging(&amp;quot;Can't prepare statement SELECT * FROM voip_lbilling_accounts&amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
            if ( $email_alert == 1 ){&lt;br /&gt;
               &amp;amp;send_email(&amp;quot;Can't prepare statement SELECT * FROM voip_lbilling_accounts&amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
            }&lt;br /&gt;
            die;&lt;br /&gt;
        }&lt;br /&gt;
        unless ( $sth2-&amp;gt;execute ) {&lt;br /&gt;
            &amp;amp;logging(&amp;quot;Can't execute statement SELECT * FROM voip_lbilling_accounts&amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
            if ( $email_alert == 1 ){&lt;br /&gt;
               &amp;amp;send_email(&amp;quot;Can't execute statement SELECT * FROM voip_lbilling_accounts&amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
            }&lt;br /&gt;
            die;&lt;br /&gt;
        }&lt;br /&gt;
        while ( $link = $sth2-&amp;gt;fetchrow_hashref ) {&lt;br /&gt;
            &lt;br /&gt;
 	  # unless ( $link-&amp;gt;{&amp;quot;id&amp;quot;} =~ /^$link-&amp;gt;{&amp;quot;userid&amp;quot;}\d{2}$/is ) {&lt;br /&gt;
           #     &amp;amp;logging(&amp;quot;Userid not match Link id!&amp;quot;);&lt;br /&gt;
           #     next;&lt;br /&gt;
           # }&lt;br /&gt;
 &lt;br /&gt;
            $descr = &amp;amp;$czech_to_ascii($link-&amp;gt;{&amp;quot;descr&amp;quot;});&lt;br /&gt;
            $descr =~ s/[^\-\.\_\w ]/ /isg;&lt;br /&gt;
            $descr = substr($descr,0,255);&lt;br /&gt;
 &lt;br /&gt;
            push( @{$member-&amp;gt;{&amp;quot;subscribers&amp;quot;}},&lt;br /&gt;
               { &amp;quot;billingid&amp;quot; =&amp;gt; $link-&amp;gt;{&amp;quot;id&amp;quot;},&lt;br /&gt;
                 &amp;quot;cid&amp;quot; =&amp;gt; &amp;quot;420&amp;quot; . $link-&amp;gt;{&amp;quot;cid&amp;quot;},&lt;br /&gt;
                 &amp;quot;state&amp;quot; =&amp;gt; $link-&amp;gt;{&amp;quot;state&amp;quot;},&lt;br /&gt;
                 &amp;quot;limit&amp;quot; =&amp;gt; $link-&amp;gt;{&amp;quot;limit&amp;quot;},&lt;br /&gt;
                 &amp;quot;tarif&amp;quot; =&amp;gt; $link-&amp;gt;{&amp;quot;tarif&amp;quot;},&lt;br /&gt;
                 &amp;quot;descr&amp;quot; =&amp;gt; $descr&lt;br /&gt;
               } );&lt;br /&gt;
        }&lt;br /&gt;
        $sth2-&amp;gt;finish();&lt;br /&gt;
        push( @{$all}, $member );&lt;br /&gt;
    }&lt;br /&gt;
    $sth1-&amp;gt;finish();&lt;br /&gt;
 &lt;br /&gt;
 #   use Data::Dumper;&lt;br /&gt;
 #   print Dumper( $lbilling );&lt;br /&gt;
 &lt;br /&gt;
    if ( $result = $lbilling-&amp;gt;synchronize_all($all) ) {&lt;br /&gt;
        &amp;amp;logging(&amp;quot;synchronize all OK&amp;quot;);&lt;br /&gt;
        &amp;amp;logging(Dumper($result));&lt;br /&gt;
        #&amp;amp;logging(Dumper($all));&lt;br /&gt;
        return 0;&lt;br /&gt;
    } else {&lt;br /&gt;
        &amp;amp;logging(&amp;quot;Synchronize all FAILED!&amp;quot;);&lt;br /&gt;
        &amp;amp;logging(Dumper($all));&lt;br /&gt;
        &amp;amp;logging(Dumper($lbilling-&amp;gt;get_error()));&lt;br /&gt;
        if ( $email_alert == 1 ){&lt;br /&gt;
           &amp;amp;send_email(&amp;quot;Synchronize all FAILED!&amp;lt;br /&amp;gt;&amp;quot;.Dumper($lbilling-&amp;gt;get_error()));&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        return 1;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # -------------------------------------------------------------------------&lt;br /&gt;
 #synchroniza payments&lt;br /&gt;
 sub update_payments {&lt;br /&gt;
 &lt;br /&gt;
    my ( $sth, $payment, $descr );&lt;br /&gt;
 &lt;br /&gt;
    unless( $sth = $dbh-&amp;gt;prepare(&amp;quot;SELECT * FROM voip_lbilling_payments&amp;quot;) ) {&lt;br /&gt;
        &amp;amp;logging(&amp;quot;Can't prepare statement SELECT * FROM voip_lbilling_payments &amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
        if ( $email_alert == 1 ){&lt;br /&gt;
           &amp;amp;send_email(&amp;quot;Can't prepare statement SELECT * FROM voip_lbilling_payments &amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
        }&lt;br /&gt;
        die;&lt;br /&gt;
    }&lt;br /&gt;
    unless ( $sth-&amp;gt;execute ) {&lt;br /&gt;
        &amp;amp;logging(&amp;quot;Can't execute statement SELECT * FROM voip_lbilling_payments &amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
        if ( $email_alert == 1 ){&lt;br /&gt;
           &amp;amp;send_email(&amp;quot;Can't execute statement SELECT * FROM voip_lbilling_payments &amp;quot; . $dbh-&amp;gt;errstr);&lt;br /&gt;
        }&lt;br /&gt;
        die;&lt;br /&gt;
    }&lt;br /&gt;
    while ( $payment = $sth-&amp;gt;fetchrow_hashref() ) {&lt;br /&gt;
        unless ( $lbilling-&amp;gt;get_account( {&amp;quot;billingid&amp;quot; =&amp;gt; $payment-&amp;gt;{&amp;quot;userid&amp;quot;} } ) ) {&lt;br /&gt;
            &amp;amp;logging(&amp;quot;ballance added FAILED! - account &amp;quot; . $payment-&amp;gt;{&amp;quot;userid&amp;quot;} . &amp;quot; is not in billing&amp;quot;);&lt;br /&gt;
            if ( $email_alert == 1 ){&lt;br /&gt;
               &amp;amp;send_email(&amp;quot;Ballance added FAILED! - account &amp;quot; . $payment-&amp;gt;{&amp;quot;userid&amp;quot;} . &amp;quot; is not in billing&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            next;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        $descr = &amp;amp;$czech_to_ascii($payment-&amp;gt;{&amp;quot;description&amp;quot;});&lt;br /&gt;
        $descr =~ s/[^\-\.\_\w ]/ /isg;&lt;br /&gt;
        $descr = substr($descr,0,255);&lt;br /&gt;
 &lt;br /&gt;
        my $ballance = { &amp;quot;account&amp;quot; =&amp;gt; $payment-&amp;gt;{&amp;quot;userid&amp;quot;},&lt;br /&gt;
                    &amp;quot;billingid&amp;quot; =&amp;gt; $payment-&amp;gt;{&amp;quot;id&amp;quot;},&lt;br /&gt;
                    &amp;quot;value&amp;quot; =&amp;gt; int($payment-&amp;gt;{&amp;quot;value&amp;quot;}),&lt;br /&gt;
                    &amp;quot;descr&amp;quot; =&amp;gt; $descr&lt;br /&gt;
                       };&lt;br /&gt;
 &lt;br /&gt;
 #       use Data::Dumper;&lt;br /&gt;
 #       print Dumper( $lbilling );&lt;br /&gt;
 &lt;br /&gt;
        if ( $lbilling-&amp;gt;add_ballance($ballance) ) {&lt;br /&gt;
            &amp;amp;logging(&amp;quot;ballance added OK&amp;quot;);&lt;br /&gt;
            unless ( $dbh-&amp;gt;do(&amp;quot;UPDATE transfers SET type = 4 WHERE id = &amp;quot;.$payment-&amp;gt;{&amp;quot;id&amp;quot;}) ) {&lt;br /&gt;
                &amp;amp;logging();&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            &amp;amp;logging(&amp;quot;Ballance added FAILED!&amp;quot;);&lt;br /&gt;
            &amp;amp;logging(Dumper($ballance));&lt;br /&gt;
            &amp;amp;logging(Dumper($lbilling-&amp;gt;get_error()));&lt;br /&gt;
            if ( $email_alert == 1 ){&lt;br /&gt;
               &amp;amp;send_email(&amp;quot;Ballance added FAILED!&amp;lt;br /&amp;gt;&amp;quot;.Dumper($lbilling-&amp;gt;get_error()));&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    $sth-&amp;gt;finish();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # -------------------------------------------------------------------------&lt;br /&gt;
 # logging&lt;br /&gt;
 sub logging {&lt;br /&gt;
    my ( $message ) = @_;&lt;br /&gt;
    my ( $time, $i );&lt;br /&gt;
 &lt;br /&gt;
    if ( not open(LOG, $log_file) ) {&lt;br /&gt;
        die;&lt;br /&gt;
    }&lt;br /&gt;
    $time = localtime(time);&lt;br /&gt;
    if ( $file_lock ) { flock(LOG, 2); }&lt;br /&gt;
    print LOG &amp;quot;$time  \t $message \r\n&amp;quot;;&lt;br /&gt;
    close(LOG);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # ------------------------------------------------------------------------- &lt;br /&gt;
 #send e-mail&lt;br /&gt;
 sub send_email {&lt;br /&gt;
 &lt;br /&gt;
   my ( $messages ) = @_;&lt;br /&gt;
 &lt;br /&gt;
   # perl -MCPAN -e shell  &lt;br /&gt;
   # install MIME::Lite::TT::HTML &lt;br /&gt;
 &lt;br /&gt;
   my %params; &lt;br /&gt;
  &lt;br /&gt;
   $params{first_name} = 'FreenetIS billing'; &lt;br /&gt;
   $params{message}  = $messages; &lt;br /&gt;
   &lt;br /&gt;
 &lt;br /&gt;
   my %options; &lt;br /&gt;
   $options{INCLUDE_PATH} = '/usr/local/bin/lbilling'; &lt;br /&gt;
 &lt;br /&gt;
   my $msg = MIME::Lite::TT::HTML-&amp;gt;new( &lt;br /&gt;
             From        =&amp;gt;  $email_address_from,&lt;br /&gt;
             To          =&amp;gt;  $email_address_to, &lt;br /&gt;
             Subject     =&amp;gt;  'FreenetIS - Problem with billing synchronization', &lt;br /&gt;
             Template    =&amp;gt;  {&lt;br /&gt;
                                 html    =&amp;gt;  'html.tt',&lt;br /&gt;
                             },&lt;br /&gt;
             TmplOptions =&amp;gt;  \%options, &lt;br /&gt;
             TmplParams  =&amp;gt;  \%params, &lt;br /&gt;
   ); &lt;br /&gt;
 &lt;br /&gt;
   $msg-&amp;gt;send('smtp', $email_smtp, Timeout =&amp;gt; 5 );&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Dzolo</name></author>	</entry>

	</feed>