<?php
/**
 * @package      
 * @subpackage   
 * @author       
 * @copyright    
 * @license      
 */

// no direct access
defined('_JEXEC') or die('Restricted access');
    function tomb2($t) {return "<pre style='color:red'>". print_r($t)."</pre>"; }

class ModAtiSzamlaSegedHelper{

    public static function getAjax() { return "baszod";}
	
    public static $log_sor = 1;

    public static $headers = array(
        'X-API-KEY:7ab0ba22-68b0-11ec-8800-0adb4fd9a356',
        'accept: application/json'
    );

    public static $h2 = array(
        'X-API-KEY:bdfe1e4a-67c1-11ec-9a89-0adb4fd9a356',
        'accept: application/json'
    );
    public static $eszeri = array(
        '57198',
        'faf72fa243ec4f9761e049198a3f12e780b14b1e',
        '4987'
    );

    public static $eszeri_2 = array(
        '40841',
        'fd6edf95d221f0a8927b24d59a9ce4d146b24e65',
        '5150'
    );





    public static function ujSzeriAjax() {

        // eszerzodes adatok
        $calback = 'https://vetedu.hu/XML/ati_vissza.php';
        $atiranyit = 'http://vetedu.hu/index.php/fiokom/szerzodeseim';
        $felhasznalo_azonosito = 57198;
        $titkos_kulcs = 'faf72fa243ec4f9761e049198a3f12e780b14b1e';

        $r = '';
        $user = JFactory::getUser();

        $db = JFactory::getDbo();
        $query = $db->getQuery(true);

        $input = JFactory::getApplication()->input;
        $rend  = $input->get('rend', '', 'string');
        $rendszam  = $input->get('ord', '', 'string');
        $tid  = $input->get('tid', '', 'string');

        if (empty($rend) || empty($rendszam) || empty($tid)) {
            ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - HIBA: Alap adatok hianyoznak!');
            return "HIBA: Alap adatok hianyoznak!";
        }
        
        ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - Új szerzodés ajax hívás');

        $query
            ->select(array('ui.*'))
            ->from($db->quoteName('#__virtuemart_order_userinfos', 'ui'))
            ->where($db->quoteName('virtuemart_user_id') . " = " . $db->quote($user->id))
            ->where($db->quoteName('virtuemart_order_id') . " = " . $db->quote($rend));
        // Reset the query using our newly populated query object.
        $db->setQuery($query);
        $db->execute();
// echo $db->getQuery();        
        if ( $db->getNumRows() <1 ){ 
            ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - HIBA: Userinfo ret ures');
             return "HIBA: Userinfo ret ures"; 
       }
        $ui = $db->loadAssocList();
        $ui = $ui[0];
// print_r($ui);

        if (count($ui)) {

            ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - Userinfo ok');
            
            // rendelés tételek listázása
            $query = $db->getQuery(true);

            $query
                ->select(array('ot.virtuemart_order_item_id','ot.order_item_name','ot.product_final_price','p.*','r.calc_rule_name', 'r.calc_value'))
                ->from($db->quoteName('#__virtuemart_order_items', 'ot'))
                ->join('LEFT', $db->quoteName('#__virtuemart_products', 'p') . 
                    ' ON ' . $db->quoteName('p.virtuemart_product_id') . ' = ' . $db->quoteName('ot.virtuemart_product_id'))
                ->join('INNER', $db->quoteName('#__virtuemart_order_calc_rules', 'r') . ' ON ' . $db->quoteName('r.virtuemart_order_item_id') . ' = ' . $db->quoteName('ot.virtuemart_order_item_id'))
                ->where($db->quoteName('ot.virtuemart_order_item_id') . " = " . $db->quote($tid))
                ->order($db->quoteName('ot.created_on') . ' DESC');
            // Reset the query using our newly populated query object.
            $db->setQuery($query);
            // Load the results as a list of stdClass objects (see later for more options on retrieving data).
// echo $db->getQuery();        
            $db->execute();
            if ( $db->getNumRows() <1 ){ 
                ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - HIBA: Rendeles tetel ures');
                return "HIBA: Rendeles tetel ures"; 
            }
            $tetelek = $db->loadAssocList();

            ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - Tételek ok');

            $x = file_get_contents(__DIR__ . '/xml_sablon.xml');
            $nev = $ui['first_name'].' '.$ui['last_name'];


            foreach ($tetelek as $v) { // egy tetel van de akkor is forach
// print_r($v);
                // számla és szerződés forrás kiválasztása

                $eves = ModAtiSzamlaSegedHelper::ati_BEves('szam');
                if( ($eves + $v['product_final_price']) > 11800000){
                    static::$headers = static::$h2;
                    static::$eszeri = static::$eszeri_2;
                }



                // rendelés tételek CUSTOMs listázása
                $query = $db->getQuery(true);
                $query
                    ->select(array('c.virtuemart_custom_id','v.customfield_value'))
                    ->from($db->quoteName('#__virtuemart_product_customfields', 'v'))
                    ->join('LEFT', $db->quoteName('#__virtuemart_customs', 'c') . 
                        ' ON ' . $db->quoteName('c.virtuemart_custom_id') . ' = ' . $db->quoteName('v.virtuemart_custom_id'))
                    ->where($db->quoteName('v.virtuemart_product_id') . " = " . $db->quote($v['virtuemart_product_id']))
                    ->where($db->quoteName('v.virtuemart_custom_id') . " > 10 " );
                $db->setQuery($query);
                // echo $db->getQuery();        
                $db->execute();
                if ( $db->getNumRows() <1 ){ 
                    ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - HIBA: Rendeles egyedik ures');
                    return "HIBA: Rendeles egyedik ures"; 
                }
                $egyedik = $db->loadAssocList();
                $egy = array();
                foreach ($egyedik as $e_v) {
                    $egy[$e_v['virtuemart_custom_id']] = $e_v['customfield_value'];
                }
                
// die(print_r($egy));
/*
                    15  Képzés formája 
                    16  Képzés kezdete
                    17  Képzés befejezése
                    18  Képzés óraszáma 
                    19  Hiányzás mértéke 
                    20  Elméleti óraszám 
                    21  Gyakorlati óraszám 
                    22  Elméleti oktatás címe
                    23  Gyakorlati oktatás címe 
                    24  Megengedett elméleti hiányzás
                    25  Megengedett gyakorlati hiányzás
                    26  Számonkérés formája
                    27  Számonkérés időpontja 
                    28  Képzés óradíja
                    29  Megállapított díj 
                    [30] => video link
                    [31] => 10 group
                    [32] => 442 menu
                    [33] => pdf link
    */
// print_r($ui);

                // ModAtiSzamlaSegedHelper::ati_log($rendszam.'['.$rend.'] - ui: '.tomb2($ui));


                $x = '<?xml version="1.0" encoding="UTF-8"?>
<szerzodes>
    <fiokom>
        <felhasznalo_azonosito>'.static::$eszeri[0].'</felhasznalo_azonosito>
        <titkos_kulcs>'.static::$eszeri[1].'</titkos_kulcs>
    </fiokom>
    <szerzodes_fejlece>
        <szerzodes_targya>Felnőttképzési szerződés</szerzodes_targya>
        <szerzodes_tipus>'.static::$eszeri[2].'</szerzodes_tipus>
        <fogado_fel_email>'.$user->email.'</fogado_fel_email>
        <legyen_alairva>igen</legyen_alairva> 
        <kiirhatja_ala>1</kiirhatja_ala>
        <callback_url>'.$calback.'</callback_url> 
        <atiranyitasi_link>'.$atiranyit.'</atiranyitasi_link>
        <szerzodes_ido_korlat>'.date('Y-m-d', strtotime("+7 day") ).'</szerzodes_ido_korlat>
    </szerzodes_fejlece>
    <ugyfel_adatok> 
        <ugyfel_tipus>'.$ui['alairo'].'</ugyfel_tipus>
        <neve>'.$nev.'</neve>';

                if( $ui['alairo'] == 2 ){  //   CEG    //
  
        $x .= '
        <ceg_neve>'.$ui['company'].'</ceg_neve>
        <ceg_adoszama>'.$ui['adoszam'].'</ceg_adoszama>
        <ceg_szekhelye>'.$ui['zip'].' '.$ui['city'].' '.$ui['address_1'].'</ceg_szekhelye> 
        ';
                    $tmp_a = array(
                        '__U_SZULCSAL__' => '-',
                        '__U_SZUL__' => '-',
                        '__U_ANYJA__' => '-',
                        '__U_ISKOLA__' => '-',
                        '__U_OKTAZON__' => '-',
                        '__U_PECSET__' => '-'
                    );


                } else {  //     MAGANSZEMELY    //

        $x .= '
        <telefonszam>'.$ui['phone_1'].'</telefonszam>
        <lakcim>'.$ui['zip'].' '.$ui['city'].' '.$ui['address_1'].'</lakcim>
        <anyja_neve>'.$ui['anyja'].'</anyja_neve>
        <szemelyi_szama>'.$ui['szemszam'].'</szemelyi_szama> 
        ';

                    $tmp_a = array(
                        '__U_ANYJA__' => $ui['anyja'],
                        '__U_SZULCSAL__' => $ui['szulcsal'],
                        '__U_SZUL__' => $ui['szul'],
                        '__U_ISKOLA__' => $ui['iskola'],
                        '__U_OKTAZON__' => ($ui['oktatasi_azonosito']? $ui['oktatasi_azonosito']:'-'),
                        '__U_PECSET__' => ($ui['pecset']? $ui['pecset']:'-')
                    );
                }
$x .= '</ugyfel_adatok>';
                
                $szerz_adat = '    
    <szerzodes_valtozoi>
         <kepzes_megnevezese>__K_NEVE__</kepzes_megnevezese>
         <kepzes_formaja>__K_FORMAJA__</kepzes_formaja>
         <kepzes_kezdete>__K_KEZD__</kepzes_kezdete>
         <kepzes_befejezese>__K_VEGE__</kepzes_befejezese>
         <kepzes_oraszama>__K_ORASZAM__</kepzes_oraszama>
         <hianyzas_merteke>__K_HIANYZAS__</hianyzas_merteke>
         <megengedett_elmeleti_hianyzas>__K_HIANY_ELM__</megengedett_elmeleti_hianyzas>
         <megengedett_gyakorlati_hianyzas>__K_HIANY_GYAK__</megengedett_gyakorlati_hianyzas>
         <elmeleti_oraszam>__K_ELM__</elmeleti_oraszam>
         <gyakorlati_oraszam>__K_GYAK__</gyakorlati_oraszam>
         <elmeleti_oktatas_cime>__K_ELM_CIM__</elmeleti_oktatas_cime>
         <gyakorlati_oktatas_cime>__K_GYAK_CIM__</gyakorlati_oktatas_cime>
         <szamonkeres_idopontja>__K_VIZSGA__</szamonkeres_idopontja>
         <szamonkeres_formaja>__K_VIZSGA_FORMA__</szamonkeres_formaja>
         <kepzes_dija>__K_DIJ__</kepzes_dija>
         <kepzes_oradija>__K_ORADIJ__</kepzes_oradija>
         <megallapitott_dij>__K_MEGALL__</megallapitott_dij>
         <szuletesi_csaladi_es_utoneve>__U_SZULCSAL__</szuletesi_csaladi_es_utoneve>
         <anyja_neve>__U_ANYJA__</anyja_neve>
         <szuletesi_helye_es_ideje>__U_SZUL__</szuletesi_helye_es_ideje>
         <legmagasabb_iskolai_vegzettsege>__U_ISKOLA__</legmagasabb_iskolai_vegzettsege>
         <oktatasi_azonosito_szama>__U_OKTAZON__</oktatasi_azonosito_szama>
         <pecsetszam>__U_PECSET__</pecsetszam>
    </szerzodes_valtozoi>
</szerzodes>';


                $replace_array = array(
                    '__K_NEVE__' => $v['order_item_name'],
                    '__K_FORMAJA__' => $egy[15],
                    '__K_KEZD__' => $egy[16],
                    '__K_VEGE__' => $egy[17],
                    '__K_ORASZAM__' => $egy[18],
                    '__K_HIANYZAS__' => $egy[19],
                    '__K_HIANY_ELM__' => $egy[24],
                    '__K_HIANY_GYAK__' =>$egy[25],
                    '__K_ELM__' => $egy[20],
                    '__K_GYAK__' => $egy[21],
                    '__K_ELM_CIM__' => $egy[22],
                    '__K_GYAK_CIM__' => $egy[23],
                    '__K_VIZSGA__' => $egy[27],
                    '__K_VIZSGA_FORMA__' => $egy[26],
                    '__K_DIJ__' => round($v['product_final_price'],0),
                    '__K_ORADIJ__' => $egy[28],
                    '__K_MEGALL__' => $egy[29]
                );
               $replace_array = array_merge($replace_array, $tmp_a);
// print_r($replace_array);

                $x_tart = $x.strtr($szerz_adat, $replace_array);
                $tetel_id = $v['virtuemart_order_item_id'];
                $file = getcwd().'/XML/'.$rendszam.'_'.$tetel_id.'.xml';
        
                ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - file: '.$file);
                ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - file tartalom: '.$x_tart);

                // echo $file;
                // unlink($file);
                if(file_put_contents($file, $x_tart)){

                    // megvan az xml fájlunk mehetunk szerzodest kotni

                    $esz_link = 'https://www.eszerzodes.hu/xml-ugynok-szerzodes-keszites?xml_url=https://vetedu.hu/XML/'.$rendszam.'_'.$tetel_id.'.xml';

// $esz_link = 'https://fejlesztes.ideastyle.hu/vetmed/XML/siker.xml';


                    if( $esz_res = file_get_contents($esz_link) ){

                        ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - E-szerzodes valasz: '.$esz_res);

                        $xml = new SimpleXMLElement($esz_res);

                        if (isset($xml->szerzodes_azonosito) ){
                            
                            ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - E-szerzodes azonosito: '.$xml->szerzodes_azonosito);

                            ModAtiSzamlaSegedHelper::ujEgyedi($rend, $tid, $xml->szerzodes_azonosito, $egy);
                            
                            ModAtiSzamlaSegedHelper::ujSzamla($ui, $v, $rendszam, $rend, $egy);
                        }

                        if (isset($xml->hibak->hiba[0]) ){
                            ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - E-szerzodes valasz hiba: '.$xml->hibak->hiba[0]);
                            return "HIBA: E-szerzodes valasz hiba - ".$xml->hibak->hiba[0];
                        }

                    } else{
                        ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - E-szerzodes atadas hiba');
                        return "HIBA: E-szerzodes atadas hiba";
                    }


                } else {
                    ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - XML file iras hiba');
                    return "HIBA: XML file iras hiba";
                }

            } // foreach
                
        } else {
            ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - Userinfo hianyzik');
            return "HIBA: Userinfo hianyzik";
        }
        // print_r($tetelek);
	} //ujSzeri
	


///////////////////////////////////////////////////////////////
//      BILLINGO UJ SZAMLA
///////////////////////////////////////////////////////////////

    public static function ujSzamla($ui, $v, $rendszam, $rend, $egy) {
 
        $fizhat = 8;


        $user = JFactory::getUser();
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);

        if(!empty($ui['billingo_id'])){

            ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - Számlázás indul');
// tomb2($egy);

            // termék
            $com = $egy[16]." - ".$egy[17]. " (".$ui['first_name'].' '.$ui['last_name'].")";
            $tmp = array(
                  "name"=> $v['order_item_name'],
                  "unit_price"=> $v['product_final_price'],
                  "unit_price_type"=> "gross",
                  "quantity"=> 1,
                  "unit"=> "db",
                  "vat"=> number_format($v['calc_value'],0)."%",
                  "comment"=> $com,
                  "entitlement"=> ""
                    );
            $it[] = $tmp ;
// tomb2($it);


            $fh = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + $fizhat, date('Y')));
            $vars = array(
                    'partner_id' => $ui['billingo_id'],
                    "bank_account_id"=> 0, //KH
                    "block_id" => 0, //JC24
                    "type"=> "proforma", 
                    "fulfillment_date"=> date('Y-m-d'),
                    "due_date"=> $fh,
                    "payment_method"=> "online_bankcard",
                    "language"=> "hu",
                    "currency"=> "HUF",
                    "conversion_rate"=> 1,
                    "electronic"=> false,
                    "paid"=> false,
                    "items"=> $it,
                    "comment"=> " 
A számla közvetített szolgáltatást tartalmaz.
Köszönjük, hogy nálunk vásárolt.",
                    "settings"=> array(
                        "mediated_service"=> false,
                        "without_financial_fulfillment"=> false,
                        "online_payment"=> "SimplePay",
                        "round"=> "five",
                        "order_number"=> $rendszam,
                        "place_id"=> 0
                    )
                );
            $postvars = json_encode($vars, JSON_PRETTY_PRINT);
// tomb2( $postvars);
// die();
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,"https://api.billingo.hu/v3/documents");
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST' );
            curl_setopt($ch, CURLOPT_POSTFIELDS,$postvars);  //Post Fields
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
            curl_setopt($ch, CURLOPT_HTTPHEADER, static::$headers);
            $result = curl_exec ($ch);
            curl_close ($ch);
            $r = json_decode($result, true);
// tomb2( $r );
            if( ! empty($r['id']) ){
                // siker, rögzítve
                ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - Számla kész: '.$r['invoice_number'].' - '.$r['id']);

                $db = JFactory::getDbo();
                $query = $db->getQuery(true);
                // Fields to update.
                $fields = array(
                    $db->quoteName('szamla_id') . ' = ' . $r['id'],
                    $db->quoteName('szamla_szama') . ' = ' . $db->quote($r['invoice_number']),
                    $db->quoteName('szamla_stat') . ' = ' . $db->quote($r['payment_status']),
                    $db->quoteName('szamla_url') . ' = ' . $db->quote( ModAtiSzamlaSegedHelper::szamlaLink($r['id']) ),
                    $db->quoteName('szamla_head') . ' = ' . $db->quote( static::$headers[0] )
                );
                // Conditions for which records should be updated.
                $conditions = array(
                    $db->quoteName('rend_tetel_id') . ' = '.$db->quote($v['virtuemart_order_item_id'])
                );
                $query->update($db->quoteName('#__ati_egyedi'))->set($fields)->where($conditions);
                $db->setQuery($query);
// echo $db->getQuery();        
                
                $result = $db->execute();
                echo '<p>Számlája sorszáma: '.$r['invoice_number'].'</p>';

                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL,"https://api.billingo.hu/v3/documents/".$r['id']."/send");
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST' );
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
                curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
                curl_setopt($ch, CURLOPT_HTTPHEADER, static::$headers);
                $result = curl_exec ($ch);
                curl_close ($ch);
                $r = json_decode($result, true);
                
                if( $r['emails'] ){
                    echo '<p>Számlája elküldve: '.$r['emails'][0].'</p>';
                }

            } else{
                ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - Számlázás hiba: '.$r['error']['message']);
                die( "HIBA: Számlázás hiba");
            }


        } else{

            ModAtiSzamlaSegedHelper::ujBUser($ui, $v, $fizhat, $rendszam, $rend, $egy);

        }

    }

///////////////////////////////////////////////////////////////
//      BILLINGO USER
///////////////////////////////////////////////////////////////
    public static function ujBUser($u, $v, $fizhat, $rendszam, $rend, $egy) {
// tomb2($u);
        if($u['virtuemart_order_userinfo_id']>0 && count(static::$headers) ){

            $vevo = (!empty($u['company']) ? $u['company'] : $u['first_name'].' '.$u['last_name']);
            $vars = array(
                    'name' => $vevo,
                    "taxcode"=> '',
                    "address" => array(
                        "country_code" => 'HU',
                        "post_code" => $u['zip'],
                        "city" => $u['city'],
                        "address" => $u['address_1']
                    ),
                    "emails" => array($u['email']),
                    "custom_billing_settings" => array(
                        "payment_method" => "online_bankcard",
                        "document_form"=> "paper",
                        "due_days"=> $fizhat,
                        "document_currency"=> "HUF",
                        "template_language_code"=> "hu"
                        )
                    );
            $postvars = json_encode($vars, JSON_PRETTY_PRINT);
   // die(tomb2( $postvars) );
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,"https://api.billingo.hu/v3/partners");
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST' );
            curl_setopt($ch, CURLOPT_POSTFIELDS,$postvars);  //Post Fields
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
            // curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
            curl_setopt($ch, CURLOPT_HTTPHEADER, static::$headers);
            $result = curl_exec ($ch);
            curl_close ($ch);
            $r = json_decode($result, true);

    // tomb2( $r );
            if( ! empty($r['id']) ){
                // siker, rögzítve
                $u['billingo_id'] = $r['id'];

                echo '<p>Billingó azonosítója: '.$r['id'].'</p>';
                $db = JFactory::getDbo();
                $query = $db->getQuery(true);
                // Fields to update.
                $fields = array(
                    $db->quoteName('billingo_id') . ' = ' . $db->quote($r['id'])
                );
                // Conditions for which records should be updated.
                $conditions = array(
                    $db->quoteName('virtuemart_user_id') . ' ='.$db->quote($u['virtuemart_user_id'])
                );
                $query->update($db->quoteName('#__virtuemart_userinfos'))->set($fields)->where($conditions);
                $db->setQuery($query);
                $result = $db->execute();
                $fields = array(
                    $db->quoteName('billingo_id') . ' = ' . $db->quote($r['id'])
                );
                // Conditions for which records should be updated.
                $conditions = array(
                    $db->quoteName('virtuemart_user_id') . ' ='.$db->quote($u['virtuemart_user_id'])
                );
                $query->update($db->quoteName('#__virtuemart_order_userinfos'))->set($fields)->where($conditions);
                $db->setQuery($query);
                $result = $db->execute();

                ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - Új Billingó partner létrehozva: '.$r['id']);

                ModAtiSzamlaSegedHelper::ujSzamla($u, $v, $rendszam, $rend, $egy);

            }
        } else{

            ModAtiSzamlaSegedHelper::ati_log($rendszam.' ['.$rend.'] - Billingó partner rogzítés hiba: '.$r['id']);
            return "HIBA: Billingó partner hiba";

        }
    }

    


///////////////////////////////////////////////////////////////
//      BILLINGO HAVI
///////////////////////////////////////////////////////////////

    public static function ati_BHavi($hova = 'szam') {
        if (count(static::$headers)) {
            $vars = 'https://api.billingo.hu/v3/documents?page=1&per_page=100&start_date='.date('Y-m').'-01&end_date='.date('Y-m-d');
            // $vars .= '&type=proforma';
            ModAtiSzamlaSegedHelper::ati_log('Billingó Havi lekérdezés: '.$vars);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,$vars);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET' );
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
            curl_setopt($ch, CURLOPT_HTTPHEADER, static::$headers);
            $result = curl_exec ($ch);
            curl_close ($ch);
            $r = json_decode($result, true);

            $osszeg = 0;

            if(isset($r['data'])){
                foreach ($r['data'] as $v) {
                    if( ! ($v['type'] == 'proforma' AND $v['payment_status'] == 'paid') )
                        $osszeg += $v['gross_total'];
                }
    // tomb2($osszeg);
                if ($hova == 'szam') return (int)$osszeg;
            } else {
                ModAtiSzamlaSegedHelper::ati_log('Billingó hiba: - elofizu');
                return "HIBA: Billingó kapcsolat hiba";
            }
        } else {
            ModAtiSzamlaSegedHelper::ati_log('Billingó Havi lekérdezés hiba: - headers');
            return "HIBA: Billingó hiba";
        }

    }


///////////////////////////////////////////////////////////////
//      BILLINGO ÉVES
///////////////////////////////////////////////////////////////

    public static function ati_BEves($hova = 'szam') {
        if (count(static::$headers)) {
            $vars = 'https://api.billingo.hu/v3/documents?page=1&per_page=100&start_date='.date('Y').'-01-01&end_date='.date('Y-m-d');
            // $vars .= '&type=proforma';
            ModAtiSzamlaSegedHelper::ati_log('Billingó Éves lekérdezés: '.$vars);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,$vars);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET' );
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
            curl_setopt($ch, CURLOPT_HTTPHEADER, static::$headers);
            $result = curl_exec ($ch);
            curl_close ($ch);
            $r = json_decode($result, true);

            $osszeg = 0;

            if(isset($r['data'])){
                foreach ($r['data'] as $v) {
                    if( ! ($v['type'] == 'proforma' AND $v['payment_status'] == 'paid') )
                        $osszeg += $v['gross_total'];
                }
    // tomb2($osszeg);
                if ($hova == 'menu') {
                    echo '
                    <ul id="vm-menu" class="nav nav-hover">
                      <li class="dropdown ">
                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">EV (Éves): '.penz($osszeg).'</a>
                      </li>
                    </ul>';   
                }
                if ($hova == 'szam') return (int)$osszeg;
            } else {
                ModAtiSzamlaSegedHelper::ati_log('Billingó BEves hiba: - elofizu');
                return "HIBA: Billingó kapcsolat hiba";
            }
        } else {
            ModAtiSzamlaSegedHelper::ati_log('Billingó Éves lekérdezés hiba: - headers');
            return "HIBA: Billingó hiba";
        }

    }



///////////////////////////////////////////////////////////////
//      BILLINGO LETOLT
///////////////////////////////////////////////////////////////

    public static function szamlaLink($szamla) {

        if (count(static::$headers)) {
            $vars = 'https://api.billingo.hu/v3/documents/'.$szamla.'/public-url';
            ModAtiSzamlaSegedHelper::ati_log('Billingó szamla link: '.$vars);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,$vars);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET' );
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
            curl_setopt($ch, CURLOPT_HTTPHEADER, static::$headers);
            $result = curl_exec ($ch);
            curl_close ($ch);
            $r = json_decode($result, true);
            return $r['public_url'];
        } else {
            ModAtiSzamlaSegedHelper::ati_log('Billingó számla link lekérdezés hiba: - headers');
            return "HIBA: Billingó hiba";
        }

    }


///////////////////////////////////////////////////////////////
//      ujEGYEDI
///////////////////////////////////////////////////////////////

    public static function ujEgyedi($rend, $tid, $azon, $egy) {
        $user = JFactory::getUser();
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $columns = array( 'user', 'rend_id', 'rend_tetel_id', 'szeri_id', 'group', 'menu');
        $values = array($db->quote($user->id), $db->quote($rend), $db->quote($tid), $db->quote($azon), $db->quote($egy[31]), $db->quote($egy[32]) );
        $query
            ->insert($db->quoteName('#__ati_egyedi'))
            ->columns($db->quoteName($columns))
            ->values(implode(',', $values));
        $db->setQuery($query);
        
        try{

            $db->execute();
        
        } catch (Exception $e){
            ModAtiSzamlaSegedHelper::ati_log("ujEgyedi :: Insert hiba: ($rend, $tid, $azon)".$db->getQuery()->dump());
            echo "HIBA: Szerzodes azonosíto rogzites hiba";
            // echo $e->getMessage();
        }
        echo '<div class="inner-container"><h1>Szerződése létrejött, azonosítója: '.$azon.'</h1>
        <p>Szerződéséről hamarosan egy e-mail értesítést fog kapni az e-szerzodes.hu-tól</p>
        <p>Kérjük kövesse az ebben található instrukciókat!</p>
        </div>';
    }

    public static function ati_log($valami) {
        $valami = static::$log_sor.': '.$valami;
        $user = JFactory::getUser();
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $columns = array( 'user', 'esemeny');
        $values = array($db->quote($user->id), $db->quote($valami) );
        $query
            ->insert($db->quoteName('#__ati_egyedi_log'))
            ->columns($db->quoteName($columns))
            ->values(implode(',', $values));
        $db->setQuery($query);
        $db->execute();
        static::$log_sor++;
    }




}
