function handle_document_generation($cart_order_id, $invoice, $url, $document_type)
{
    $connection_parameters = get_api_connection_parameters("./config.ini");
    $nazwaUsera = $connection_parameters['API_LOGIN'];
    //login do ifirma
    $klucz_hex = $connection_parameters['API_KEY_FAKTURA'];
    //klucz wygenerowany w ifirmie
    //$typ_faktury = 'orygkopia'; //typ faktury w pdfie: np.dup, kopia, oryg, orygkopia
    $nazwaKlucza = "faktura";
    $typ_pliku = "json";
    //rodzaj pliku, ktory wysylamy
    $typ_pobierz = "pdf";
    //oczekiwana odpowiedz
    $url_get = "https://www.ifirma.pl/iapi/fakturakraj/";
    $klucz = hexToStr($klucz_hex);
    $exception = false;
    $bledy = array();
    $content = $invoice->toJson();
    $curlWysylanieHandle = curl_init($url);
    $faktura_do_poprawki = false;
    ustaw_odpowiedni_miesiac_ksiegowy($invoice, $connection_parameters);
    $rsp = wyslij_jedna($typ_pliku, $content, $klucz, $url, $nazwaUsera, $nazwaKlucza, $curlWysylanieHandle);
    $tab = json_decode($rsp, true);
    if (is_response_status_ok($tab['response']['Kod'])) {
        $url_pliku = '';
        $invoice_number = $tab['response']['Identyfikator'];
        if (isset($typ_faktury)) {
            $url_pliku = $url_get . $invoice_number . '.' . $typ_pobierz . '.' . $typ_faktury;
        } else {
            $url_pliku = $url_get . $invoice_number . '.' . $typ_pobierz;
        }
        $curlHandle = curl_init($url_pliku);
        curl_close($curlHandle);
        unset($curlHandle);
        add_info_about_generated_document($document_type, $cart_order_id, $invoice_number, get_class($invoice));
        //-------
        $generated_invoice_array = handle_invoice_download($cart_order_id, "json");
        $invdetails = $invoice->getZaplacono();
        $invpozycje = $invoice->getPozycje();
        if ($generated_invoice_array['response']['Zaplacono'] != $invdetails) {
            $faktura_do_poprawki = true;
        }
        $l = 0;
        foreach ($generated_invoice_array['response']['Pozycje'] as $pozycja) {
            $vatDwa = (double) $invpozycje[$l]['StawkaVat'];
            //->getStawkaVat();
            $cenaDwa = (double) $invpozycje[$l]['CenaJednostkowa'];
            //->getCenaJednostkowa();
            $vatRaz = (double) $pozycja['StawkaVat'];
            $cenaRaz = (double) $pozycja['CenaJednostkowa'];
            ++$l;
            if ($vatRaz != $vatDwa || $cenaRaz != $cenaDwa) {
                $faktura_do_poprawki = true;
            }
        }
        if ($faktura_do_poprawki == true) {
            add_info_about_invoice_fault($cart_order_id);
            echo "Wykryto drobne nieprawidlowosci.<br/> Możliwa przyczyna: -różnica w sposobie zaokrąglania kwoty podatku.<br />";
            echo "Proszę dokonać weryfikacji poprawności wystawionej faktury z poziomu serwisu www.ifirma.pl";
        }
        //-----------
    } else {
        $bledy = przechwyc_bledy($content, $tab, $bledy);
    }
    curl_close($curlWysylanieHandle);
    unset($curlWysylanieHandle);
    if (count($bledy) > 0) {
        display_errors($bledy);
    } else {
        redirect_to_order_page($cart_order_id);
    }
}
Esempio n. 2
0
<?php 
//na serwerze produkcyjnym usunac [/opencart]
require_once realpath(getcwd() . '/../../../../config.php');
require_once DIR_SYSTEM . 'startup.php';
require_once "ifirma/BuilderClasses.php";
require_once "ifirma/ifirma_functions.php";
$cart_order_id = $_GET['cart_order_id'];
$registry = new Registry();
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('session', new Session());
if ($registry->get('session')->data['token'] != $_GET['token']) {
    echo "Wystąpił problem. Zaloguj się ponownie.";
} else {
    handle_invoice_download($cart_order_id);
}