Wątek zablokowany 2014-10-21 08:10 przez dzek69.

wFirma problem ze skryptem

0

Witam serdecznie,
Ściągnąłem sobie skrypt ze strony wFirma.pl do fakturowania (i wysyłania faktury na maila). Mam problem z uruchomieniem go :/ gdy próbuję go uruchomić skrypt twierdzi że nie ma danych (a są podane). Wiecie może dlaczego?

Kod wygląda tak:

<?php
$C = new SoapClient(null, array(
    'uri' => "http://api.wfirma.pl/",
    'location' => "http://api.wfirma.pl",
    'trace' => 1,
));

$r = $C->login('demo','demo');
if ($r['status'] == 'OK') {
    $sid = $r['response'];
    // tutaj wywołanie innych metod ...
} else {
    echo "Wystąpił błąd: {$r['status']}: {$r['response']}";
}
$invoiceHeader = array( 
    
    'date' => '2009-01-01',             // data wystawienia, format (YYYY-MM-DD)

    'disposaldate' => '2009-01-01',     // data sprzedaży, format (YYYY-MM-DD)

    'paymentdate' => '2009-01-15',      // termin płatności, format (YYYY-MM-DD)
    
    'paymentmethod' => 'transfer',      // metoda płatności, możliwe wartości to cash, 
                                        // transfer i compensation
    
    'paid' => 0,                        // opcjonalna flaga 0/1 czy faktura została
                                        // opłacona w całości, 0 jest wartością domyślną
                                        
    'description' => 'Tutaj moje uwagi', // opcjonalne uwagi na fakturze, (max.320 znaków)
    
    'auto_send' => '0',                 // opcjonalna flaga 0/1 czy wysłać fakturę na
                                        // adres email kontrahenta, 
                                        // domyślna wartość to 0
    
    'lump' => 'rate20',                 // opcjonalna stawka ryczałtu dla korzystających 
                                        // z pakietu Księgowość Premium, 
                                        // możliwe wartości to: rate 20
                                        // rate17, rate8_5, rate5_5, rate3, 
                                        // domyślna wartość, jeżeli nie zostanie
                                        // podana, to rate20
                                        
    'tax_evaluation_method' => 'netto',  // określenie metody naliczania cen na fakturze, 
                                        // ceny w pozycjach faktury pozycji podawane
                                        // netto lub brutto, 
                                        // domyślna wartość to netto
                                        
    
                                        
    'type' => 'normal',                 // opcjonalnie type faktury, możliwe wartości:
                                        // normal - faktura VAT (wartość domyślna)
                                        // proforma - faktura proforma
);

// dane nabywcy
$contractorDetails = array( 
    "name" => "Jan Kowalski",          // nazwa pełna kontrahenta
    
    "nip" => "1231231212",             // NIP kontrahenta, bez spacji i kresek
    
    "street" => "Kwiatowa 5",          // Ulica, nr domu i lokalu

    'zip' => '59-413',                 // kod pocztowy

    'city' => 'Wrocław',               // miejscowość

    'email' => '[email protected]',// opcjonalnie adres email
    
    'add' => 1                         // flaga 0/1 czy dopisać kontrahenta do katalogu
                                       // (dopasowanie po NIP, jeśli taki kontrahent
                                       // już jest to nie zostanie 
                                       // dodany ani zaktualizowany) 
);

// pozycje towarów i usług na fakturze
$invoiceContents = array(
    array(       
        'name' => 'Mysz komputerowa',  // nazwa towaru, max. 1024 znaki
        
        'price' => '35,12',            // cenna netto lub brutto w zależności 
                                       // od ustawienia tax_evaluation_method w
                                       // invoiceHeader, format NUMERIC(15,2)
                                          
        'unit' => 'szt.',              // jednostka, max 64 znaki
      
        'count' => '1',                // ilość towaru lub usługi, format NUMERIC(15,4) 
                                       // max. 15 cyfr i dwie cyfry po przecniku
                                       
        'vatcode' => '22',             // opcjonalnie stawka VAT, 
                                       // możliwe wartości to
                                       // 22, 7, 3, 0, WDT, EXP, NP, ZW, 
                                       // domyślna wartość: 22
                                    
        'classification' => '',        // opcjonalnie kod PKWiU dla obniżonych 
                                       // stawek VAT
                                       
        'discount' => '25,00'          // opcjonalnie rabat w pozycji faktury, 
                                       // format NUMERIC(2,2)
    ) 
);


// zmienne $sid, $invoiceHeader i $contractorDetails i $invoiceContents z poprzednich przykładów

// wystawienie faktury
$r = $C->addInvoice($sid, $invoiceHeader, $contactorDetails, $invoiceContents);

if ($r['status']=='OK') {
    $invoice_id = $r['response'];
    $id_faktury = $r['object_id']; 
    // id faktury mozna wykorzystac np do wysyłania 
    // faktury na email lub pobrania PDF z fakturą
    // (patrz metody sendInvoice() i downloadInvoice())
} else {
    // coś poszło nie tak
    print_r($r['status']);
    print_r($r['response']);
}    


// $sid - id sesji zwrócony przez metodę login()
// $invoice_id - ID faktury zwrócony przez metodę addInvoice();

// dodatkowe ustawienia (opcjonalne)
$options = array(
    'page' => 'invoice',            // którą stronę faktury załączyć, możliwe wartości to:
                                    // invoice - oryginał
                                    // invoicecopy - kopia
                                    // all - wszystkie, wartość domyślna
                                    
    'leaflet' => 0,                 // flaga 0/1 czy dołączyć druczek przelewu
                                    // działa tylko dla metody płatności przelew, 
                                    // domyślnie 0
    
    'duplicate' => 0,               // flaga 0/1 czy nadrukować słowo duplikat 
                                    // z aktualną datą, 
                                    // domyślnie 0
);


// generujemy plik PDF z wydrukiem
$response = $C->sendInvoice($sid, $invoice_id, $option);

if ($r['status'] == 'OK') {
    // w odpowiedzi przychodzi URL do pliku PDF, URL jest ważny przez 10 minut
    $url_pliku_pdf = $r['response'];
} else {
    // coś poszło nie tak
    switch ($r['status']) {
        case 'ERR':
            echo "Nieprawidłowwy ID faktury";
            break;
        case 'FATAL_ERROR':
            echo "Błąd usługi - skontaktuj się z administratorem";
            break;
    }
}


// $sid - id sesji zwrócony przez metodę login()
// $invoice_id - ID faktury zwrócony przez metodę addInvoice();

// dodatkowe ustawienia (opcjonalne)
$options = array(
    'subject' => 'Wystawiono fakturę',  
                                    // Temat wiadomości email, domyślnie 'Faktura od NAZWA_FIRMY'
    
    'page' => 'invoice',            // którą stronę faktury załączyć, możliwe wartości to:
                                    // invoice - oryginał
                                    // invoicecopy - kopia
                                    // all - wszystkie, wartość domyślna
                                    
    'leaflet' => 0,                 // flaga 0/1 czy dołączyć druczek przelewu
                                    // działa tylko dla metody płatności przelew, 
                                    // domyślnie 0
    
    'duplicate' => 0,               // flaga 0/1 czy nadrukować słowo duplikat 
                                    // z aktualną datą, 
                                    // domyślnie 0
                                    
    'cc' => '',                     // opcjonalnie adres email DW
    'bcc' => '',                    // opcjonalnie adres email UDW
    
    'body' => 'Przesyłam fakturę. Pozdrowienia'
                                    // treść wiadomości email, jeśli nie będzie wpisana to 
                                    // zostanie użyta treść zdefiniowana w ustawieniach firmy
);

$response = $C->sendInvoice($sid, $invoice_id, '[email protected]');

switch ($r['response']) {
    case 'OK':           // faktura wysłana
        break;
    case 'ERR':          // nie ma takiej faktury, sprawdź $invoice_id
        break;
    case 'FATAL_ERROR':  // coś poszło nie tak - skontaktuj się z nami
        break;
}

$C->logout($sid);

Skrypt nie wykrywa danych... Widzicie jakiś błąd?

Northwest

0

Nauczcie się wreszcie, że "nie wykrywa", "nie działa" albo "jest błąd" nie obrazuje problemu.
Gdzie dokładnie nie wykrywa? W którym momencie zaobserwowałeś błąd?

Zdaje mi się że oni API w formacie WSDL nie udostępniają:
http://api.wfirma.pl/?wsdl

Tak więc skąd ten twój SoapClient ma obsłużyć funkcje?

0

Array ( [name] => Pole nie może być puste [street] => Pole nie może być puste [zip] => Pole nie może być puste [city] => Pole nie może być puste ) [invoiceContents] => Array ( ) )

http://wfirma.pl/artykul/api-interfejs-dla-programistow - przykład brałem z tego

0

jest literówka w nazwie zmiennej $contractorDetails

0

@support wfirma.pl:
Dobre oko! Swoją drogą niezły support, jeśli sami wyszperaliście problem na tym forum i od razu pomogliście.

@Northwest:
Literówka jest w tej linii:

$r = $C->addInvoice($sid, $invoiceHeader, $contactorDetails, $invoiceContents);

(jest $contactorDetails, powinno być $contractorDetails, czyli zjadło r)

1 użytkowników online, w tym zalogowanych: 0, gości: 1